package main
import "fmt"
func main(){
fmt.Println("hello json")
var a string = "Json"
fmt.Println(a)
var b,t int = 1,2
fmt.Println(b,t)
result,_:= Compute(2 ,2.1)
fmt.Println(result)
}
//代码解读 每一个GO源码的开头都是使用package声明 表示该go代码所属的包
//包是GO语言里最基本的分发单位 也是工程管理中依赖关系的体现
//要生成GO可执行程序,必须要建立一个名字为main的包 并且在该包中包含一个叫main的函数(该函数是Go可执行程序的执行起点)
//go语言的main函数是不可以跟参数,也不能定义返回值
// 在包的声明之后 是一系列的import语句 用于导入该程序所依赖的包
// 函数声明
// func 函数名(参数列表)(返回值列表){}
//对应的实例如下
func Compute(value1 float64,value2 float64)(result float64,err error){
result = value1+ value2
return result,err
}
为了能够构建这个工程,需要先把这个工程的根目录加入到环境变量GOPATH中。假设calcproj
目录位于~/goyard下,则应编辑~/.bashrc文件,并添加下面这行代码:
export GOPATH=~/goyard/calcproj
然后执行以下命令应用该设置:
$ source ~/.bashrc
GOPATH和PATH环境变量一样,也可以接受多个路径,并且路径和路径之间用冒号分割。
设置完GOPATH后,现在我们开始构建工程。假设我们希望把生成的可执行文件放到
calcproj/bin目录中
package main
import "fmt"
//返回值三个
func GetName()(fsistName,lastName,nickName string){
return "may","chan","chibi Marko"
}
func main(){
//如果只想获取nickName 则
_,_,nickName:=GetName()
fmt.Println(nickName)
//常量的定义
//Go的常量定义可以限定常量类型,但不是必需的。如果定义常量时没有指定类型,那么它
//与字面常量一样,是无类型常量
const Pi float64 = 3.1547
const zero =0.0
const (
size int64 =1024
eof =-1
)
const u,v float32 =0,3
const a,b,c =3,4,"foo"
fmt.Println(Pi)
const mask = 1<<3
fmt.Println(mask)
//预定义常量
// Go语言预定义了这些常量 true false 和iota
// iota 比较特殊 可以被认为是一个可被编译器修改的常量 在每一个const关键字出现时 被重置为0
// 然后在下一个const出现之前 每出现一次 iota 其代表的数字都自动加1
//枚举
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
numberOfDays )
fmt.Println(Saturday)
//类型
//布尔值 true
//整型 int8,byte,int16 int uint uintptr
//需要注意的是,int和int32在Go语言里被认为是两种不同的类型,编译器也不会帮你自动 做类型转换
//浮点型 float32 float64
//复数类型 :complex64、complex128。
// 字符串:string。
//字符类型:rune。
// 错误类型:error。
// 指针(pointer)
//数组(array)
// 切片(slice)
//字典(map)
//通道(chan)
//结构体(struct)
//接口(interf)
//比较运算符
i,j :=1,2
if i==j{
fmt.Println("yes")
}else {
fmt.Println("no")
}
//两个不同类型的整型数不能直接比较,比如int8类型的数和int类型的数不能直接比较,但
//各种类型的整型变量都可以直接与字面常量(literal)进行比较
//数组
//数组是Go语言编程中最常用的数据结构之一。顾名思义,数组就是指一系列同一类型数据
//的集合。数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数 组的长度
//数组声明方法
//[32]byte() //长度为32的数组 每个元素为一个字节
//[2*N]struct {x,y int32} 复杂类型数组
// [1000]*float64 指针数组
//[3][5]int 二维数组
//[2][2][2]float64 // 等同于[2]([2]([2]float64))
//从以上类型也可以看出,数组可以是多维的,比如[3][5]int就表达了一个3行5列的二维整 型数组,总共可以存放15个整型元素。
arr :=[4]int{1,2,3,4}
//for i:=0;i<=len(arr);i++{
// fmt.Println("key:",i,"value:",arr[i])
//}
for i,v:= range arr{
fmt.Println("key:",i,"value:",v)
}
}