现在需要了解一下GO语言的数据类型。

布尔型

布尔型的值只可以是常量 true 或者 false。
一个简单的例子:

package main

import "fmt"

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

运行结果为:
image.png

数字类型

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

package main

import "fmt"

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

运行结果为:
image.png

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 main

import "fmt"

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

运行结果为:
image.png

零值

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

package main

import "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)
}

运行结果为:
image.png

派生类型

包括:

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

特殊说明

1. 这里可以不声明变量的类型,让Go自己去推导;
var i = 100;
2. 也可以一次性声明多个变量
package main

import "fmt"

func main() {
	// 声明一个数字类型的变量a,一个布尔类型的变量b
	var (
		a = 200
		b = false
	)
	fmt.Println("打印a的值为:", a, ";打印b的值为:", b)
}

运行结果为:

image.png

3. 变量的简短声明

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

package main

import "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)
}

运行结果为:
image.png

4. 常量

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

package main

import "fmt"

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

运行结果为:
image.png
运行报错,常量不能修改。

5. iota

iota是一个常量生成器,他可以用来初始化相似规则的常量,避免重复的初始化

package main

import "fmt"

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

运行结果为:
image.png

上一篇 下一篇