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)
}
结果: