Packages, variables and functions
Packages
packages中,以大寫字母開頭的name是exported name,當import package時,只有exported name可以被從外部訪問。
Functions
同type的連續參數可以只在最後指明type。
函數可以有多個返回值。
func swap(x, y string) (string, string) {
return y, x
}
Go支持有name的返回值:
- 函數定義時就定義好返回變量名,在函數內操作返回變量。
- 用naked return語句返回。
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
注意點:文中建議只在短函數中這樣使用,因爲長了容易影響可讀性。
Variables
var關鍵字定義變量。
有初始值時可以省略type。
技巧及注意點:
- 在函數內,可以使用:=符號替換有初始值的變量定義。
- 但是在函數外,所有語句必須以關鍵字開始,所以不能使用:=符號。
Basic types
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for uint8
rune // alias for int32
// represents a Unicode code point
float32 float64
complex64 complex128
技巧:
- var和import都可以用小括號聲明多個包或變量。
- 文中建議,如無特殊需求,使用int就好,不必指明size或sign。
變量定義時,如不指定初始值,則分配對應type的默認值。
- numeric type: 0
- bool: false
- string: ""
表達式T(v)表示將值v轉換成T類型:
var i = 10
var f = float64(i)
注意點:與C語言不同,Go必須顯式轉換。
常量定義將var換成const關鍵字即可,不過不能使用:=符號。
疑問
- Numeric constants are high-precision values.