美文网首页
Struct结构体

Struct结构体

作者: Caesar_emperor | 来源:发表于2020-04-23 15:45 被阅读0次

一.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
}

相关文章

网友评论

      本文标题:Struct结构体

      本文链接:https://www.haomeiwen.com/subject/wmjaihtx.html