以下筆記摘錄自『 The Go Workshop 』。
如果變數是指標,或者傳遞給函式的是指標變數,那麼在函式中對該參數的值做任何變動,會連帶影響到函式外部原始變數的值。
For example,
package main
import "fmt"
func add5Value(count int) {
count += 5
fmt.Println("add5Value :", count)
}
func add5Point(count *int) {
*count += 5
fmt.Println("add5Point :", *count)
}
func main() {
var count int
add5Value(count)
fmt.Println("add5Value post:", count)
add5Point(&count)
fmt.Println("add5Point post:", count)
}
輸出結果為:
add5Value : 5
add5Value post: 0
add5Point : 5
add5Point post: 5
以值傳遞變數時,在函式內對變數做的變動只在函式內有效,不會影響傳遞給函式的原始變數,然而若是以指標形式傳入函式,就會改變原始變數!
常數宣告跟var很類似,但改用const。宣告常數時,初始值是『必要的』,型別可有可無,不指定型別,Go語言會自行推斷。也可以像var一樣,用一個const同時宣告多個常數。
const <常數> <型別> = <值>
const (
<常數 1> <型別 1> = <值 1>
<常數 2> <型別 2> = <值 2>
...
<常數 N> <型別 N> = <值 N>