golang中的结构体和方法

孤风追影 · · 2037 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1. 结构体的定义
  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
  1. 带标签的结构体
        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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:孤风追影

查看原文:golang中的结构体和方法

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2037 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传