内置变量类型与常量
2018-05-26 本文已影响0人
__apple
静态语言,往往都会有一些,内置的变量类型供我们使用,动态语言是在程序运行的时候,动态的添加上去的,这个由解释器帮我们完成,我们不需要考虑,这可能也是动态语言,慢的原因之一吧!
我们来看Go语言由多少种变量类型呢?
- bool, string
- (u)int (u)int8 (u)int16 (u)int32 (u)int64 uintptr
- byte, rune
- float32,float64, complex64, complex128
其中int bool string byte 我在这里就不说了,这个在别的编程语言中基本都有,Go语言也是没有long longlong 这些类型,如果位数比较大就直接用int64就可以了,这里面有个uintptr 它是指针,这个指针的长度也是跟着操作系统来的。
rune是Go语言里面的字符型,它在这里不叫char叫rune,因为char只有一字节,现在我们是全球化的应用,如果是一字节char会有很多的坑,rune的长度是32位的,unicode一般是2个字节,我们一般使用utf8,他有很多字符都是3字节,因为我们采用4字节的int32来代表rune。
complex是复数,它有实部与虚部,这个是一个二维平面上面的数,比如我们在高中的学过复数:3 + 4i 这里3就是实部4就是虚部,它具体有什么用呢?
func euler() {
fmt.Printf("%.3f\n",
cmplx.Exp(1i*math.Pi)+1)
}
我们用这个cmplx的类型,可以很简单进行描述一些很复杂的数学公式,这也就使Go语言在数学计算方面的能力变的很强了。
说完了内置变量,还有一个比较有意思的东西,常量。
我们来看一下Go语言是如何定义常量的
func consts() {
const (
filename = "abc.txt"
a, b = 3, 4
)
fmt.Println(filename, c)
}
直接用const关键字,就可以了,另外如果常量定义在了函数的外部,那么在包内部都可以使用,一般在其他的语言当中,我们都喜欢把常量名字进行大写,但是我们在Go语言中一般不这么做,因为在Go语言中,大小写是有含义的,首字母大写代表的public.
接下来我们来讲一个特殊的常量,枚举类型。
Go语言没有特殊的枚举关键字, 一般我们都使用const()
func enums() {
const (
cpp = iota
php
python
golang
javascript
)
const (
b = 1 << (10 * iota)
kb
mb
gb
tb
pb
)
fmt.Println(cpp, javascript, python, golang)
fmt.Println(b, kb, mb, gb, tb, pb)
}
这里的iota可以是个自增值的种子如果你写的出来表达式,那么就能把你想要的定义出来,是不是感觉像个彩蛋,很牛逼的感觉 有没有,怎么样你学会了嘛!赶紧在编辑器里面练两次就会了,加油!!!!