# 结构体
package main
import "fmt"
type Stu struct{
age int
sex byte //字符型
name string
}
func main() {
//结构体定义与初始化
//顺序初始化 每个成员都必须初始化
var s Stu = Stu{18,'m',"Lusa"}
fmt.Println(s) //{18 109 Lusa}
//指定初始化 剩余成员默认值
ss := Stu{name:"Tom"}
fmt.Println(ss) //{0 0 Tom}
var ps *Stu = &Stu{18,'m',"Lusa"}
pss := &Stu{name:"Jack"}
fmt.Println(ps) //&{18 109 Lusa}
fmt.Println(*ps) //{18 109 Lusa}
fmt.Printf("%T\n",pss) //*main.StuB
//结构体比较与赋值
s2 := s
fmt.Println(s == s2) //true
test()
test2(s) //值传递
test3(&s) //传递地址
}
func test(){
var s Stu
var ps *Stu = &s
ps2 := new(Stu)
s.age = 18
(*ps).sex = 'm'
ps.name = "Amy"
fmt.Println(s)
fmt.Println(*ps2)
}
func test2(s Stu){
s.age = 20
}
func test3(s *Stu){
s.age = 20
}