Go入门系列

Go入门系列(二)基本数据类型

2020-02-24  本文已影响0人  RabbitMask

目录:
一、数据类型
二、常量变量

一、数据类型

对比python,我们必须意识到GoLang是一门强类型语言。

1、布尔型

在 Go 中,布尔值的类型为 bool,值是 true 或 false,默认为 false。

func main() {
    var a bool
    fmt.Println(a)
}
#输出
false
2、数字类型
类型    取值范围
int8    -128到127
uint8   0到255
int16   -32768到32767
uint16  0到65535
int32   -2147483648到2147483647
uint32  0到4294967295
int64   -2^(64-1)到2^(64-1)-1
uint64  0到2^64-1

所谓无符号类型即为非负类型。

func main() {
    var x complex64 = complex(1, 2) 
    var y complex64 = complex(3, 4) 
    fmt.Println(x*y)                 
    fmt.Println(real(x*y))           
    fmt.Println(imag(x*y))           
}
#输出
(-5+10i)
-5
10
byte  与uint8等价
rune  与int32等价
uint  取值位数等于cpu位数(32/64)
int   取值位数等于cpu位数(32/64)
uintptr  无符号整型,用于存放一个指针

在go>=1.9时,对于数字类型,无需定义int及float32、float64,系统会自动识别。
尤其是int类型,在使用goland时,会直接给予“类型可忽略”的提示。

func main() {
 var a =1
 var b =1.3333
 fmt.Println(a,b)
}
#输出
1 1.3333

讲到这里,想顺便提一下go的一个特性,严格的内存管理。在之前做白盒测试的时候,有一个低风险项:声明但未使用,严格来讲对系统并没有直接危害,但确实对内存真实的浪费。这个问题在Go这里不再纠结了,如果声明却不使用,语法检查不会通过。

func main() {
 var a =1
 var b =2
 fmt.Println(a)
}
#输出
# command-line-arguments
b declared and not used
3、字符串类型

此外,多行声明须使用反引号,但是这个时候转义符不再生效,/允悲。

func main() {
 var a  =`终究
还是一个人
扛下了所有`

 fmt.Println(a)
}
#输出
终究
还是一个人
扛下了所有
func main() {
 var a = "rabbit"
 var b = "mask"
 a += b
 fmt.Println(a+"!")
}
#输出
rabbitmask!

二、常量变量

1、变量
上面交代了那么久的数据类型,最终还是为这里服务的,最基础的变量定义方式为:var identifier type,此外也可灵活运用贴合Go的习惯。

func main() {
 a := "rabbitmask"
 fmt.Println(a)
}
#输出
rabbitmask

2、常量
定义方式为const identifier [type] = value
同样,可省略type自动判定。
支持批量常量定义,未赋值则默认为前面的初始值。

func main() {
    const (
        a=1
        b=2
        c
        d
    )
 fmt.Println(a,b,c,d)
}
func main() {
    type num int
    const (
        a num=iota
        b
        c
        d
    )
 fmt.Println(a,b,c,d)
}
#输出
0 1 2 3
上一篇 下一篇

猜你喜欢

热点阅读