iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 6
1
Modern Web

從無到有,使用 Go 開發應用程式系列 第 6

Predeclared Type

中華小當家的劉昴星曾說過:「鍋子是火燄的化身」,使用鍋子也是中華廚師的必學基礎之一;而在一個程式語言裡,資料型別是資料的化身,同樣也是重要的基礎功。廚師練好基礎功,能煮出佳餚;開發者練好基礎功,才有辦法寫出千變萬化的應用程式。

Go 的資料型別有 11 種,今天先介紹 Predeclared Type ,它們也是「有名稱的型態(Named Type)」。

Boolean types

最簡單的型別-- bool ,它只有兩個預定義的常數 truefalse

Numeric types

numeric 型態包含了 integer (整數)、 float(浮點數)、 complex(複數)三種。

整數又分帶號 int 與不帶號 uint 兩類,也可以直接指定大小 int8int16int32int64 或是不帶號的 uint8uint16uint32uint64 ,這些相信一看就知道佔了多少容量(bit)。至於 intuint 會使用哪一個要看平台實作決定,有可能是 32 bit 也有可能是 64 bit。

而另外還有兩個整數型態: runeint32 的別名, byteint8 的別名。

float 有 float32float64 兩種,但沒有 float

complex 則表示複數,以 RE + IMi 的方法表示,如:

10+5i

大小則有分 complex64complex128 兩種。

Go 內建的 math 套件提供常數取得各型態的最大值和最小值,除了解整數範圍外,也有助於實作上的判斷。

如:

package main

import "fmt"
import "math"

func main() {
	fmt.Println(math.MinInt8)
	fmt.Println(math.MaxInt8)
	fmt.Println(math.MinInt16)
	fmt.Println(math.MaxInt16)
	fmt.Println(math.MinInt32)
	fmt.Println(math.MaxInt32)
	fmt.Println(math.MinInt64)
	fmt.Println(math.MaxInt64)
	
	// Uint 最小值是 0
	fmt.Println(math.MaxUint8)
	fmt.Println(math.MaxUint16)
	fmt.Println(math.MaxUint32)
	fmt.Println(math.MaxUint64)
	
	// Float 的表示是最小非 0 浮點數
	fmt.Println(math.SmallestNonzeroFloat32)
	fmt.Println(math.MaxFloat32)
	fmt.Println(math.SmallestNonzeroFloat64)
	fmt.Println(math.MaxFloat64)
}

需要注意的是,不同的數字型態,是不能直接摻在一起操作的。如 int8 不能跟 uint8 相加。另外, int 有可能是 32 位元,但 int 也不能跟 int32 相加。

String types

Go 語言字串都是 UTF-8 字元集編碼,它可以正常的處理多國語言。字串可以使用雙引號 " 或反引號 ` 定義,也可以相加,如:

package main

import "fmt"

func main() {
	fmt.Println("Hello 雙引號")
	fmt.Println(`Hello 反引號`)
	fmt.Println("雙引號" + `反引號`)
}

今日回顧

今天是蹲馬步的基本功,後面其他型態將會使用這些基本型態炒出各式各樣的菜色。

參考資料


上一篇
Variables & Constants declarations
下一篇
Array Type
系列文
從無到有,使用 Go 開發應用程式30

尚未有邦友留言

立即登入留言