Go数据类型、关键字、标识符
2020-12-13 本文已影响0人
泥人冷风
1 数据类型
1.1 按类别
- 布尔型:只可以是常量 true 或者 false。
//eg:
var b bool = true
-
数字类型:整型和浮点型。
-
位的运算采用补码字符串类型:字符串就是一串固定长度的字符连接起来的字符序列,Go 的字符串是由单个字节连接起来。
-
Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本
-
复数:complex128(64 位实数和虚数)和 complex64(32 位实数和虚数),其中 complex128 为复数的默认类型。 注:
-
i. 复数的值由三部分组成 RE + IMi,其中 RE 是实数部分,IM 是虚数部分,RE 和 IM 均为 float 类型,而最后的 i 是虚数单位。
var name complex128 = complex(x, y)
//或者
z := complex(x, y)
x = real(z)
y = imag(z)
- ii. 复数也可以用==和!=进行相等比较,只有两个复数的实部和虚部都相等的时候它们才是相等的
1.2 派生类型
- 指针类型(Pointer)
- 数组类型
- 结构化类型(struct)
- Channel类型
- 函数类型
- 切片类型
- 接口类型(interface)
- Map类型
1.3 基于架构
整型,同时提供了四种有符号整型,分别对应8、16、32、64bit(二进制)的有符号整数,与此对应四种无符号的整数类型
- uint8:无符号8位整型(0~255)
- uint16
- uint32
- uint64
- int8
- int16
- int32
- int64
浮点数 - float32
- float64
- complex64(实数虚数)
- complex128
其他 - byte
- rune
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
var str = "hello 你好"
//golang中string底层是通过byte数组实现的,座椅直接求len 实际是在按字节长度计算 所以一个汉字占3个字节算了3个长度
fmt.Println("len(str):", len(str))
//以下两种都可以得到str的字符串长度
//golang中的unicode/utf8包提供了用utf-8获取长度的方法
fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))
//通过rune类型处理unicode字符
fmt.Println("rune:", len([]rune(str)))
}
返回结果:
len(str): 12
RuneCountInString: 8
rune: 8
- uint
- int
- uintptr(无符号整型,存放一个指针)
注释:
- 表示Unicode字符的rune类型和int32类型是等价的,通常用于表示一个Unicode字符,是等价的。
- 2.byte和uint8也是等价类型,byte类型一般用于强调数值是一个原始的数据而不是一个小的整数。
- 无符号的整数类型uintptr,它没有指定具体的bit大小但是足以容纳指针。只有在底层编程时才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。
- 有符号整数采用2的补码形式表示,也就是最高bit位用来表示符号位,一个n-bit的有符号数的取值范围是从-2(n-1)到2(n-1)-1。无符号整数的所有bit位都用于表示非负数,取值范围是0到2n-1。
- 常量math.MaxFloat32 表示float32能取到的最大数值,大约是3.4e38。
- 常量math.MaxFloat64 表示float64能取到的最大数值,大约是1.8e308
- float32和float64能表示的最小值分别为1.4e-45和4.9e-324。
- 浮点数在声明的时候可以只写整数部分或者小数部分。
const e = .71828 //0.71828
const f = 1. // 1
- 很小或很大的数最好用科学计数法书写,通过e或E来指定指数部分
const Avogadro = 6.02214129e23 // 阿伏伽德罗常数
const Planck = 6.62606957e-34 // 普朗克常数
2 关键字
2.1 25个关键字或保留字
关键字 | 关键字 | 关键字 | 关键字 | 关键字 |
---|---|---|---|---|
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
2.2 36个预定义标识符
预定义标识符 | 预定义标识符 | 预定义标识符 | 预定义标识符 | 预定义标识符 | 预定义标识符 |
---|---|---|---|---|---|
append | bool | byte | cap | close | complex |
complex64 | complex128 | uint16 | copy | false | float32 |
float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new |
nil | panic | uint64 | println | real | |
recover | string | true | uint | uint8 | uintptr |
2.3 知识点
- 程序一般由关键字、常量、变量、运算符、字符和函数组成。
- 程序中可能会使用到这些分隔符:括号(),中括号[]和大括号{}。
- 程序中可能会使用到这些标点符号:.、,、;、:和...。
3 标识符
标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或多个字母(AZ和az)数字(0~9)、下划线“_”组成的序列,但是第一个字符必须是字母或下划线而不能是数字。