变量的定义:
go总使用var来声明变量,在函数外面声明变量的方式有 var 变量1, 变量2, 变量3 [int] = 1, 2, 3,其中int这个类型声明可以省略。如果在函数内部声明可以使用以下这种更加简便的方法 变量1, 变量2, 变量3 := 1, 2, 3,这种方式只能在函数内使用。
常量的使用:
go中常量可以定义为数组、布尔值、字符串等类型。使用const 常量名 [常量类型] = 常量值。
也可以采用分组声明的方式,如:
const pi = 3.14
const prefix = "Go_"
var i int
var sum int
采用分组后:
const (
pi = 3.14
prefix = "Go_"
)
var (
i int
sum int
)
在分组声明是,const分组的第一个常量被默认的设置为0值,第二个及后续的常量被默认设置为他前面那个常量的表达式,如果那个常量的值似乎iota,则它也被设置为iota,iota是go的一个关键字,它默认值为0,并逐步增1,注意:只有iota在遇到一个const关键字时,它才会被重置为0,如:
const (
i = iota
j = 3.14
k = iota
l
) 那么打印出来的结果是 i=0,j=3.14,k=2,l=3
const (
_ = iota
kb = 1 << (10 * iota)
mb
gb
tb
pb
)
可以在同一行使用多个iota,他们会各种递增不会相关干扰。
const (
i , j = 2*iota, iota
m, n
)
内置类型:
布尔值:go中布尔值类型的值只有两个,分别是true和false,它与其他值不能相互转化,如和1、0。
数组类型:go同时指出无符号和带符号两种,其中有rune, int8, int16, int32, int64和byte, uint8, uint16, uint32, uint64,其中rune为int32,btye为uint8的别称。需要注意的是,这些类型的变量之间不允许互相赋值和操作,不然后在编译时报错。如:
var a int8
var b int32
var c = a + b
这样是不行的,还有int和int32不可以相互操作。浮点型有float32和float64两种,没有float类型。复试类型,go默认支持complex128(64位实数+64为虚数),也有complex64。
字符串:go中字符串采用urf-8编码,字符串用一对双引号或反引号来定义,字符串是不可变的,如果要改变字符串的值,可以使用[]rune来强制转换,再修改完成后再用string()转换回来。如:
s := "hello"
c := []rune(s)
c[0] = 'c'
s := string(c)
注意如果类型中存放值不超过类型范围,类型可以不用强制转换,如byte := 'c',可以来存放字符。声明多行字符串可以使用反引号来声明,字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出。
注意:go对于已声明而未使用的变量,常量,或引入的包未使用,都会报错。go的一些默认行为,大写字母开头的变量可导出,也就是在其他包中可以访问,是公用变量,小写字母开头的为私有变量。函数名也一样,大写字母开头的为public函数,小写字母开头的为private函数。