package main
import (
"fmt"
)
type Cat struct{
Name string
Age int
}
func main(){
// 第一種方式,先聲明再初始化
var cat1 Cat
cat1.Name = "cat1"
cat1.Age = 1
fmt.Println("cat1 =", cat1)
// 第二種方式,定義的時候按照字段的順序傳入值來初始化
var cat2 Cat = Cat{"cat2", 2}
fmt.Println("cat2 =", cat2)
// 第三種方式,定義的時候按照map的形式指定字段的值來初始化
var cat3 Cat = Cat{Age: 3, Name: "cat3"}
fmt.Println("cat3 =", cat3)
// 第四種方式,使用new返回一個指定類型的指針,然后初始化
var cat4 *Cat = new(Cat)
(*cat4).Name = "cat4"
(*cat4).Age = 4
// 注意,這里有語法糖,可以直接 cat4.Name = "cat4",底層會加上*
fmt.Println("cat4 =", *cat4)
// 第五種方式,使用&返回一個指定類型的指針,
// 然后初始化(也可以按照map的形式指定字段的值,或者按順序傳入字段的值來直接初始化,類似於方式2和3)
var cat5 *Cat = &Cat{}
(*cat5).Name = "cat5"
(*cat5).Age = 5
// 注意,這里有語法糖,可以直接 cat5.Name = "cat5",底層會加上*
fmt.Println("cat5 =", *cat5)
}
結果: