一.Struct的基本用法为 True,则逻辑 NOT 条件 False,否则为 True。
type Person struct {
Name string
Age int
sex string
}
--初始化定义值的五种方式--
func main() {
--关键字的键值对--
p1 := Person{
Name: "ck",
Age: 20,
}
--直接传值--
p2 := Person{
"CK",
21,
"male",
}
--通过new函数分配一个指针,此处P的类型为*Person--
type Student struct{
Name string
}
var stu2 *Student = new(Student)<=> p3 :=new(Person) / var stu2 *Student= &Student{}<=>stu2 := &Student{}
--通过*--
var p4 *Person =&Person{
Age:20,
Name:"hua",
}
--先创建再赋值--
var p5 Person
p5.Name="hua"
p5.Age=18
p5.sex="80"
**注意:传值使用上面的传关键字的键值对方式可以不用全部传入,但如果直接传值需要与结构体一一对应**
p1.Age = 25 //修改value
fmt.Println(p1,p2,p3,p4,p5)
}
==>struct上,未赋值,则以0输出
二.struct做为map的键
type Person struct {
Name string
age int
}
func main(){
m := map[Person]int{
Person{"ck",29}: 10,
}
fmt.Println(m)
}
三.嵌套
当被嵌入结构中的某个字段与当前struct中已存在的字段同名时,编译器从外向内逐级查找所有层次的匿名字段,直到发现目标或者报错。
type Person struct {
Age string
Name string
}
type User struct {
Person
Age int
}
func main() {
u := User{
Person: Person{
Age: "20",
Name: "strq",
}, //第一个person是user结构体内的;第二个person是person的一个单独结构体
Age: 22,
}
fmt.Println(u.Name) // ck
}
网友评论