1. 结构体的定义
    type Node struct {
            field1 type1
            filed2 type2
            ...
    }
2.结构体的声明和初始化
    type User struct {
        name string
        age  int
        sex  string
    }

    // 1.var 定义一个结构体类型的变量
    var boyd = User
   // 2. 使用结构体字面量的形式来声明一个结构体类型的变量
    ben := User {
           name: "ben",
           age: 32,
           sex: "male",
    }
   // 3. 不使用字段名,给结构体字段赋值
    tom := {"tom", 33, "male"} // 这中就需要按照字段的顺序给该结构体的字段赋值
3. 嵌套结构
  1. 嵌套有名结构体
    type User struct {
            name string
            age  int
    }
    type Admin struct {
            person User
            level  string
    }
    // 这种嵌套结构体情况下的赋值如下
    robin := Admin {
             person: User {
                      name: "robin",
                      age: 21,
             },
             level: "administrator,
    }
  1. 嵌套匿名结构体
    type User struct {
         name string
         age  int
    }

    type Admin struct {
        level int
        User
    }

    account := Admin {
        level: 1,
        User{name: "jack", age: 22}
    }
  1. 结构体的成员的访问使用(.)运算符
    type User struct {
         name string
         age  int
    }

    type Admin struct {
        level int
        User
    }

    account := Admin {
        level: 1,
        User{name: "jack", age: 22}
    }

    root := Admin{}
    root.level = 21
    root.name = "root"
    root.User.age = 21
    type User struct {
     name string "user name"
     age  int "user age"
}
4. 方法
  1. 概念:方法能给用户定义的类型添加新的行为。方法实际上也是函数,只不过是声明时,在关键字func和方法名之间增加了一个参数
    type user struct {
         name string
         age  int
    }

    func (u user) say() {
         fmt.Println("hello", u.name)
    }
    func (u *user) hello() {
         fmt.Println("say hello", u.name, u.age)
    }

    u := user{"bobo", 12}
    u.say()
    person := &user{"tom", 33}
    person.hello()

that's all