一、數組數組
var array1 = [5]int{1, 2, 3} var array2 = [...]int{6, 7, 8} var array3 [5]int array4 := [5]int{1, 2, 3} array5 := new([3]int)
二、切片函數
切片能夠經過數組構建,這裏不討論這種方式指針
var slice1 = []int{9, 10, 11, 12} slice2 := make([]int, 5) var slice3 []int slice2 := []int {元素1[, 元素2, ...]}
能夠發現[]中有數字的是固定長度的數組,沒有數字的表示切片code
三、map對象
// 先聲明map
var m1 map[string]string
// 再使用make函數建立一個非nil的map,nil map不能賦值
m1 = make(map[string]string) string
// 直接建立
m2 := make(map[string]string)it
// 直接建立
// 初始化 + 賦值一體化
m3 := map[string]string{
"a": "aa",
"b": "bb",
}map
//建立+初始化ping
var m4 map[string][string]= make(map[string]string)make
map必須初始化才能使用,不然會報錯
五、結構體
a:=new(user)//返回的是實例化的對象的指針
b:=&user{}//返回的是實例化的對象的指針
c:=user{}
var d user = user{}
//使用&T{...}建立struct,結果爲指針類型
var s1 *Student = &Student{102, "John", "Nanjing Road", 19}
//使用T{...}建立struct,結果爲value類型
var s2 Student = Student{103, "Smith", "Heping Road", 20}
type student struct { name string age int } func main() { s1 := new(student) s2 := &student{"b", 1} s3 := student{"c", 3} var s4 student = student{"d", 4} var s5 *student = &student{"d", 4} //&{ 0} &{b 1} {c 3} {d 4} &{d 4} fmt.Println(s1, s2, s3, s4, s5) }
看輸出就明白了。