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

ctlm9788 9年前
   <p>Go 语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。本章介绍基础数据类型,包括 整型,浮点,复数,布尔,字符串,常量。</p>    <h2>整型</h2>    <p>包括 int8、int16、int32和int64,还有 uint8、uint16、uint32和uint64 四种无符号整形。分别对应8、16、32、64bit大小的整型。</p>    <pre>  <code class="language-go">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'  </code></pre>    <p>单引号其实是表示该字符的 Unicode 编码,也是整型。</p>    <h2>浮点型</h2>    <p>Go 提供了float32和float64两种浮点类似,符合 IEEE754 规范,会 js 的朋友都知道 0.1 != 0.3-0.2 的 bug。</p>    <pre>  <code class="language-go">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  </code></pre>    <p>好吧,反正 js 习惯了,也不算什么。</p>    <p>math.MaxFloat32 最大值大约 3.4e38math.MaxFloat64 最大值大约 1.8e308</p>    <p>如果不知道科学计数法,那么简单说 1e3 == 1000,所以 e308 就是 308 个 0。</p>    <h2>复数</h2>    <p>不会,跳过。。</p>    <h2>布尔型</h2>    <p>都一样,跳过。。</p>    <h3>字符串</h3>    <p>只能使用 双引号 包裹,单引号只能包裹到那个 Unicode字符,而且单引号表示的是字符的Unicode十进制值。</p>    <p>字符串长度通过 len 得到,切片形式用 s[i:j] 方式得到。</p>    <pre>  <code class="language-go">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"  </code></pre>    <p>转义为 \xhh 十六进制, \ooo 八进制, \uhhhh Unicode十六进制以及 \Uhhhhhhhh 扩展Unicode十六进制。</p>    <p>为了便于日常使用,还提供了字符模板,包括 text 和 html 的模板,两者区别只是 html 提供了转义功能。字符模板通过反引号包裹大段文本:</p>    <pre>  <code class="language-go">const GoUsage = `Go is a tool for managing Go source code.    Usage:   go command [arguments]  ...`  </code></pre>    <h2>常量</h2>    <p>略。。。</p>    <h2>小结</h2>    <p>就基础数据而言,跟js大体类似,具体的坑就等使用时发现吧。明天继续加油。</p>    <p>来自: <a href="/misc/goto?guid=4959671331540680186" rel="nofollow">http://www.52cik.com/2016/04/21/go-notes-basic-types.html</a></p>