package main
import "fmt"
/*
结构体 type name struct
说明:struct是值传递所以 结构体1=结构体2 这是如果想通过结构体1修改结构体2那么在给结构体1赋值是就应该赋的是 &结构体2的地址值
*/
//定义结构体就是PHP中的类
type Cat struct {//名字开头大写就可以在其他包使用 下面变量也是相同
Name string
Age int
Color string
arrName [3] int //可以是数组 切片 指针 map等 如果字段类型是 指针 slice map 需要先创建空间才能使用
}
func main() {
//用结构体 这样cat1的值就是Cat结构体但都是默认值
var cat1 Cat
cat1.Name="名字"
cat1.Age=17
cat1.Color="黑白"
fmt.Println(cat1)
//取某个信息
fmt.Println(cat1.Name)
//可以在声明的时候就初始化内容 如果不初始化就是默认值
var cat2=Cat{
Name: "猫",
Age: 16,
Color: "蓝色",
}
fmt.Println(cat2)
//new一个类
p1 :=new(Cat)//p1其实是一个指针 但是和其他的使用一样是因为GO底层处理了
p1.Name="指针来赋值的名字"
//也可以用&地址符来声明
person :=&Cat{}
person.Name="用地址符声明的"
}