学习笔记,写到哪是哪。
1、变量
变量的声明比较自由,和python比较像。方式有多种,可以多重定义。
样例如下
var ( k int64 = 100 l string = "asd" ) //变量声明 func variable() { var a int = 123 var b, c int = 10, 100 var d = "haha" var e = 1.9 var f, g = 10, 1.8 h := "haha" i, j := 10, "haha" //e := 19 fmt.Println(a, b, c) fmt.Println(d) fmt.Println(e) fmt.Printf("f的类型为:%T,g的类型为:%T,f=%v,g=%v\n", f, g, f, g) fmt.Println(h) fmt.Printf("i的类型为:%T,j的类型为:%T,i=%v,j=%v\n", i, j, i, j) fmt.Println(k, l) }
执行结果
123 10 100
haha
1.9
f的类型为:int,g的类型为:float64,f=10,g=1.8
haha
i的类型为:int,j的类型为:string,i=10,j=haha
100 asd
注意
1、使用var对变量进行声明的时候,如果不指定类型,会自动给一种类型。
2、如果是":="来定义变量,只能在方法内,不能定义全局。
3、如果使用":="不能定义已经存在的变量。
4、var()写法一般用于声明全局变量。
2、常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
样例如下
const (
x = "abc"
y = len(x)
z = unsafe.Sizeof(x)
w1 = iota
w2
w3
w4 = "ooo"
w5 = "zzz"
w6
w7 = iota
w8
)
//常量声明 func constant() { const age int = 18 const name = "小王" const param1, param2, param3 = 1, false, "kk" fmt.Printf("%v今年%d岁,其他信息:%v%v%v\n", name, age, param1, param2, param3) fmt.Println(x, y, z) fmt.Println(w1, w2, w3, w4, w5, w6, w7, w8) }
执行结果
小王今年18岁,其他信息:1falsekk
abc 3 16
3 4 5 ooo zzz zzz 9 10
注意
1、const在方法内的使用和var基本一致,也可以进行多重定义。
2、在常量定义中可以使用一些内置函数,len()、unsafe.Sizeof()等。
3、常量定义中有个iota作为计数常量使用,会按照常量数进行+1赋值,可以中断再恢复。目前我还认识不到这个有什么具体的使用场景,后面继续学习。
小结
学习完这些其实有不少疑问,后面还需要持续思考回顾。