基本数据类型(原生数据类型):整型、浮点型、复数型、布尔型、字符串、字符(byte、true)。
复合数据类型(派生数据类型):数组(array)、切片(slice)、映射(map)、函数(function)、结构体(struct)、通道(channel)、接口(interface)、指针(pointer)。
1.整数
整数分两大类。
有符号整型:int8、int16、int32、int64、int。
无符号整型:uint8、uint16、uint32、uint64、uint。
其中uint8就是byte型,int16对应C语言的short型,int64对应C语言的long型。
类型 | 字节数 | 取值范围 | 说明 |
---|---|---|---|
int8 | 1 | -128~127 | 有符号8位整型 |
uint8 | 1 | 0~255 | 无符号8位整型 |
int16 | 2 | -32768~32767 | 有符号16位整型 |
uint16 | 2 | 0~65535 | 无符号16位整型 |
int32 | 4 | -2147483648~2147483647 | 有符号32位整型 |
uint32 | 4 | 0~4294967285 | 无符号32位整型 |
int64 | 8 | -9223372036854775808~9223372036854775807 | 有符号64位整型 |
uint64 | 8 | 0~18446744073709551615 | 无符号64位整型 |
int | 4或8 | 取决于平台 | 有符号32或64位整型 |
uint | 4或8 | 取决于平台 | 无符号32或64位整型 |
uintptr | 4或8 | 取决于平台 | 用于存放一个指针 |
声明方式如下所示。
var a int8 //声明有符号8位整型
var b uint8 //声明无符号8位整型
2.浮点型
浮点型表示存储的数据是实数。
类型 | 字节数 | 说明 |
---|---|---|
float32 | 4 | 32位的浮点型 |
float64 | 8 | 32位的浮点型 |
声明方式如下所示。
var x float32 //声明32位的浮点型
3.复数型
复数型用于表示数字中的复数。
类型 | 字节数 | 说明 |
---|---|---|
complex64 | 8 | 64位的复数型,由float32类型的实部和虚部联合表示 |
complex128 | 16 | 128位的复数型,由float64类型的实部和虚部联合表示 |
4.布尔型
布尔型用于定义标识符bool表示。在C语言中,对于布尔型的值定义,非0表示真,0表示假。而在Go语言中,布尔型的值可是常量true或者false。
var flag bool
布尔型无法参与数值运算,也无法与其他类型进行转换。
5.字符串
字符串在Go语言中是以基本数据类型出现的,使用字符串就像使用其他原生基本数据类型int、float32、float64、bool一样。
字符串在C++语言中,以类的方式进行封装,不属于基本数据类型。
var str string //定义名为str的字符串类型变量
str = "Hello World!" //将变量赋值
student := "学生" //以自动推断方式初始化
有些字符串没有现成的文字代号,所以只能用转义字符表示。
转义字符 | 表头 |
---|---|
\r | 回车符return,返回行首 |
\n | 换行符new line,直接跳到下一行的同列位置 |
\t | 制表符TAB |
\' | 单引号 |
\" | 双引号 |
\ | 反斜杠 |
定义多行字符串的方法如下。
1. 双引号书写字符串被称为字符串字面量(string literal),这种字面量不能跨行。
2.多行字符串需要使用反引号"`",多用于内嵌源码和内嵌数据。
3.在反引号中的所有代码不会被编译器识别,而只是作为字符串的一部分。
多行字符串定义方式如下
1 package main
2 import "fmt"
3 func main () {
4 var temp string
5 temp =`
6 x := 10
7 y := 20
8 z := 30
9 fmt.Println(x, " ", y, " ", z)
10 x, y, z = y, z, x
11 fmt.Println(x, " ", y, " ",z )`
12 fmt.Println(temp)
12 }
运行结构如下
6.字符
字符串中的每一个元素叫做“字符”,定义字符时使用单引号。Go语言的字符有两种。
类型 | 字节数 | 说明 |
---|---|---|
byte | 1 | 表示UTF-8字符串的单个字节的值,uint8的别名类型 |
rune | 4 | 表示单个Unicode字符,int32的别名类型 |
声明示例如下。
var a byte = 'a'
var b rune = '一'