這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
註:go語言中,不要求語句末尾加分號,這點和python類似。
註:go語言中,不允許定義沒有用到的變數,否則報錯,就像import一個沒用到的package會報錯一樣。
1、純粹的變數聲明
純粹的變數聲明時,必須以關鍵字var開頭,後面加空格跟定義的變數名,然後加空格跟變數類型。如:
var tmpInt int
var tmpString string
var tmpIntArray [10]int
var tmpSlice []int //數組切片
var tmpStruct struct {
tmpI int
}
var tmpPtr *int
var (
tmpInt_1 int
tmpString_1string
)
2、變數初始化及賦值
go語言引入一個新的賦值符號 “:=”,冒號後面緊跟一個等號,用於定義變數並直接初始化。如,下面3個語句等價:
tmpNewVar := 100
var tmpNewVar int = 100
var tmpNewVar = 100
註:“:=”這個賦值符號,左邊必須是不存在的一個變數,如果是已經存在的變數,則編譯報錯。因為這個符號本身代表“定義變數”和“初始設定變數”2個動作,所以必須是定義一個新的變數。
對於已經用var定義過的變數,則可以直接賦值即可。
註:go語言在沒有指明變數類型賦值時,可以根據等號右邊的值的類型,自動給左邊的變數確定類型,類似Python。
多重賦值:
go語言支援多重賦值,類似Python,如:
i, j = j, i
上面一行代碼可以完成i和j值的互換。
2、匿名變數
go語言中,可以支援函數返回多個傳回值,如果只想取其中一部分,可以用底線“_”來做預留位置(稱作“預留位置”不知道是否妥當,是自己這樣寫的),放到返回變數的位置,就可以了。如:
import “fmt”
funcgetPara()(para1,para2,para3int){
return1,4,7
}
func main() {
_, ret, _ :=getPara()
fmt.Println(“ret= “, ret)
}
上面main函數中,只希望擷取getPara返回的para2,可以用底線放在第1、3的位置,做預留位置。