Go 学习笔记(三)- 基础数据类型

Go 语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。本章介绍基础数据类型,包括 整型,浮点,复数,布尔,字符串,常量。

整型

包括 int8、int16、int32和int64,还有 uint8、uint16、uint32和uint64 四种无符号整形。分别对应8、16、32、64bit大小的整型。

fmt.Printf("%vn", 10)   // 10
fmt.Printf("%vn", 010) // 8
fmt.Printf("%vn", 0x10) // 16
fmt.Printf("%#vn", '1') // 49

a := 1.6 // 浮点转整型
fmt.Printf("%vn", int(a)) // 1

ascii := 'a'
unicode := '国'
newline := 'n'
fmt.Printf("%d %[1]c %[1]qn", ascii) // 97 a 'a'
fmt.Printf("%d %[1]c %[1]qn", unicode) // 22269 国 '国'
fmt.Printf("%d %[1]qn", newline) // 10 'n'

单引号其实是表示该字符的 Unicode 编码,也是整型。

浮点型

Go 提供了float32和float64两种浮点类似,符合 IEEE754 规范,会 js 的朋友都知道 0.1 != 0.3-0.2 的 bug。

fmt.Printf("%fn", 0.3-0.2) // 0.1
fmt.Printf("%vn", 0.3-0.2 == 0.1) // false
fmt.Printf("%vn", 0.3-0.2 != 0.1) // true

好吧,反正 js 习惯了,也不算什么。

math.MaxFloat32 最大值大约 3.4e38math.MaxFloat64 最大值大约 1.8e308

如果不知道科学计数法,那么简单说 1e3 == 1000,所以 e308 就是 308 个 0。

复数

不会,跳过。。

布尔型

都一样,跳过。。

字符串

只能使用 双引号 包裹,单引号只能包裹到那个 Unicode字符,而且单引号表示的是字符的Unicode十进制值。

字符串长度通过 len
得到,切片形式用 s[i:j]
方式得到。

s := "hello, world"
fmt.Println(len(s)) // "12"
fmt.Println(s[0], s[7]) // "104 119" ('h' and 'w')

c := s[len(s)] // panic: index out of range

fmt.Println(s[0:5]) // "hello"
fmt.Println(s[:5]) // "hello"
fmt.Println(s[7:]) // "world"
fmt.Println(s[:]) // "hello, world"

转义为 xhh
十六进制, ooo
八进制, uhhhh
Unicode十六进制以及 Uhhhhhhhh
扩展Unicode十六进制。

为了便于日常使用,还提供了字符模板,包括 text 和 html 的模板,两者区别只是 html 提供了转义功能。字符模板通过反引号包裹大段文本:

const GoUsage = `Go is a tool for managing Go source code.

Usage:
go command [arguments]
...`

常量

略。。。

小结

就基础数据而言,跟js大体类似,具体的坑就等使用时发现吧。明天继续加油。

稿源:楼教主 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合编程 » Go 学习笔记(三)- 基础数据类型

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录