哈哈
package main // 关键字var 声明变量 类型信息放在变量名后 //声明一个int型变量 var v1 int //声明一个string类型 var v2 string //声明多个变量 var v3, v4 bool //[0 0 0 0 0 0 0 0 0 0] 数组 var v5 [10]int //数组切片 var v6 []int //声明结构体 var v7 struct { f int } // 声明指针 var v8 *int //声明map key为string类型,value是int类型 var v9 map[string]int // 匿名函数和闭包 var v10 func(a int) int //多个需要声明的变量放在一起 var ( name int age string )
package main import "fmt" func main() { //声明变量的初始化,var 可以省略写法 var v1 int = 10 //编译器可以自动算出v2的类型 var v2 = 10 //编译器自动算出v3的类型 //同时进行变量声明和初始化 v3 := 10 fmt.Println(v1, v2, v3) } // 出现在:= 左侧的变量 只能声明一次,不可重复
package main import "fmt" //声明之后再赋值 func main() { var i int i = 100 var j int j = 50 //Go语言的多重赋值,如下代码交换i和j的变量 //go的多重赋值特性可以很明显的优化代码,相比c/c++ i, j = j, i fmt.Println(i, j) }
package main import "fmt" //使用强类型语言编程时,调用函数时为了获取一个值,却因为函数返回多个值,又得定义一堆变量 //可以使用多重返回和匿名变量来避免这些问题 func GetName() (firstname, lastname, nickname string) { return "yu", "yuchao", "chaoge" } //只想获得nickname,函数调用语句可以写 func main() { //优化代码的清晰度 _, _, nickname := GetName() fmt.Println(nickname) }
package main //声明go代码所属的包,包是go例最基本的分发单位,要生成可执行程序,必须名为main,且下面有个main()函数,作为执行起点 //导入本程序所以来的包,下列用到Println()函数,所以导入fmt import "fmt" //不得在源代码中写入未使用的包,否则编译器会出错 //软件工程的设计哲学,强制左花括号 { 的放置位置 //函数名的大小写规则 func Compute(value1 int, value2 float64) (resule float64, err error) { //函数体 fmt.Println(value1, value2) return } //main函数不能带参数,也不能定义返回值,命令行传入的参数存在os.Args变量中 func main() { Compute(1, 3) }
package main //常量是编译期间就已知,而且不可改变,可以是数值类型(整型、浮点型、复数)、布尔类型、字符串 const Pi float64 = 3.14159265358979323846 //无类型浮点常量 const Zero = 0.0 const ( //无类型常量 size int64 = 1024 eof = -1 ) //常量多重赋值 u=0.0 v=3.0 const u, v float32 = 0, 3 //无类型整型,字符串常量 const a, b, c = 3, 4, "foo"