当初须要理解一下GO语言的数据类型。

布尔型

布尔型的值只能够是常量 true 或者 false。
一个简略的例子:

package mainimport "fmt"func main() {    // 申明一个布尔型的变量i    var i bool = true    fmt.Println("打印一个布尔型的变量:i=", i)}

运行后果为:

数字类型

整型 int 和浮点型 float32、float64
Go 语言反对整型和浮点型数字,并且反对复数,其中位的运算采纳补码。

package mainimport "fmt"func main() {    // 申明一个数字类型的变量i    var i int = 100    fmt.Println("打印一个数字类型的变量:i=", i)}

运行后果为:

1. 整数型
序号类型形容
1uint8无符号 8 位整型 (0 到 255)
2uint16无符号 16 位整型 (0 到 65535)
3uint32无符号 32 位整型 (0 到 4294967295)
4uint64无符号 64 位整型 (0 到 18446744073709551615)
5int8有符号 8 位整型 (-128 到 127)
6int16有符号 16 位整型 (-32768 到 32767)
7int32有符号 32 位整型 (-2147483648 到 2147483647)
8int64有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
2. 浮点型
序号类型形容
1float32IEEE-754 32位浮点型数
2float64IEEE-754 64位浮点型数
3complex6432 位实数和虚数
4complex12864 位实数和虚数
3. 其余数字类型
序号类型形容
1byte相似 uint8
2rune相似 int32
3uint32 或 64 位
4int与 uint 一样大小
5uintptr无符号整型,用于寄存一个指针

字符串类型

字符串就是一串固定长度的字符连接起来的字符序列。
Go 的字符串是由单个字节连接起来的。
Go 语言的字符串的字节应用 UTF-8 编码标识 Unicode 文本。

package mainimport "fmt"func main() {    // 申明一个字符串类型a和一个字符串类型b    var a = "Hello"    var b = " World"    fmt.Println("打印a + b的值为:", a + b)}

运行后果为:

零值

零之其实就是一个变量的默认值
如果咱们申明了一个变量,然而没有对其进行初始化,那么Go语言会主动初始化其值为对应类型的零值

package mainimport "fmt"func main() {    // 申明各种类型的数据    var a int    var b float64    var c bool    var d string    fmt.Println("打印a的值为:", a)    fmt.Println("打印b的值为:", b)    fmt.Println("打印c的值为:", c)    fmt.Println("打印d的值为:", d)}

运行后果为:

派生类型

包含:

  • (1) 指针类型(Pointer)
  • (2) 数组类型
  • (3) 结构化类型(struct)
  • (4) Channel 类型
  • (5) 函数类型
  • (6) 切片类型
  • (7) 接口类型(interface)
  • (8) Map 类型

非凡阐明

1. 这里能够不申明变量的类型,让Go本人去推导;
var i = 100;
2. 也能够一次性申明多个变量
package mainimport "fmt"func main() {    // 申明一个数字类型的变量a,一个布尔类型的变量b    var (        a = 200        b = false    )    fmt.Println("打印a的值为:", a, ";打印b的值为:", b)}

运行后果为:

3. 变量的简短申明

Go语言提供了变量的简短申明 :=
变量名:=表达式

package mainimport "fmt"func main() {    // 简短申明各种类型的数据    a := 10    b := 10.01    c := true    d := "简短申明"    fmt.Println("打印a的值为:", a)    fmt.Println("打印b的值为:", b)    fmt.Println("打印c的值为:", c)    fmt.Println("打印d的值为:", d)}

运行后果为:

4. 常量

常量用const润饰,被润饰的变量不能被批改

package mainimport "fmt"func main() {    // 申明一个常量    const a = 10    fmt.Print("首次打印a的值为:", a)    a = 100    fmt.Println("再次打印a的值为:", a)}

运行后果为:

运行报错,常量不能批改。

5. iota

iota是一个常量生成器,他能够用来初始化类似规定的常量,防止反复的初始化

package mainimport "fmt"func main() {    // 申明几个常量    const (        a = iota + 1        b        c        d    )    fmt.Print("打印四个值为:", a, b, c, d)}

运行后果为:

集体博客地址

http://www.zhouzhaodong.xyz/