Go 學習筆記(三)- 基礎數據類型

ctlm9788 8年前發布 | 12K 次閱讀 Unicode Go語言 iOS開發 移動開發

Go 語言將數據類型分為四類:基礎類型、復合類型、引用類型和接口類型。本章介紹基礎數據類型,包括 整型,浮點,復數,布爾,字符串,常量。

整型

包括 int8、int16、int32和int64,還有 uint8、uint16、uint32和uint64 四種無符號整形。分別對應8、16、32、64bit大小的整型。

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

a := 1.6 // 浮點轉整型
fmt.Printf("%v\n", int(a)) // 1

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

單引號其實是表示該字符的 Unicode 編碼,也是整型。

浮點型

Go 提供了float32和float64兩種浮點類似,符合 IEEE754 規范,會 js 的朋友都知道 0.1 != 0.3-0.2 的 bug。

fmt.Printf("%f\n", 0.3-0.2) // 0.1
fmt.Printf("%v\n", 0.3-0.2 == 0.1) // false
fmt.Printf("%v\n", 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大體類似,具體的坑就等使用時發現吧。明天繼續加油。

來自: http://www.52cik.com/2016/04/21/go-notes-basic-types.html

 本文由用戶 ctlm9788 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!