常量与运算符-GOLANG

golang  - @amazeUI  - 2017-07-31 17:05:42

常量与运算符-GOLANG_第1张图片

在上一篇博文当中最后一句有讲到,当你需要强制转换一个int值为一个字符串类型,得到的值会和想象中有些出入。

func main() {

    a := 65

    var b = string(a)

    fmt.Println(b)

}

这里打印出来的是大写字母A,这是为什么?为什么不是一个值为65的字符串?当你强制转换时,系统会认为你想要得到是ASCII表对应的字符串,刚好65对应的是大写A。如何能够得到一个字符串的65,这就需要再引入一个包了,strconv包,strconv.Itoa能够将一个int转换为字符串,Atoi则相反。在这里我有些想不明白,Ito我能想明白,可以理解为int转换为某某,a是字符串的意思?如何证明Itoa真的就将65转换成了字符串呢,这里又得引入一个包(php简直太方便了),这个包叫reflect,有个方法为TypeOf,使用这个方法能检测值类型。

常量,和变量组一样,也可以有常量组,常量的定义在需要在编译的时候就已经可以确定。下面举个例子

const (

    a = "world"

    b = len(a)

    c = iota

)

const (

    d = iota

)

func main() {

    fmt.Println(a)

    fmt.Println(b)

    fmt.Println(c)

    fmt.Println(d)

}

在第一个常量组中,如果你将a移除,在全局变量中声明一个a='world',那么你将会得到一个错误,因为他不是一个能够确定的,他是一个变量,len函数是字符长度测量,所以b将会是一个int值为5,c是个计数器,在当前常量组中你声明了多少个常量,这个iota就是几,所以iota应该为2,如果在第一个常量组中在c下面再声明一个e常量,而不声明值,那么e就会等于上一个已声明的常量,就是c,c的值是个计数器,所以e也等于iota,所以e就等于3。来到第二常量组,里面只有一个d常量,在一个新的常量组里iota是从零开始计数的,所以d就等于0,最终打印出来的结果为world,5,2,0。当然常量应该写为大写,如果不想为外部调用的话,可以在常量命名前加个下划线。

运算符,前几篇博文有写到过运算符的概念,所以这里不再重复,我再看一遍就好了。

你可能感兴趣的:(常量与运算符-GOLANG)