zoukankan      html  css  js  c++  java
  • Go 结构体嵌套 “继承”

    嵌套结构体  嵌套匿名结构体

    //address 地址结构体
    type address struct {
      province string
      city string
    }

    //user 用户结构体
    type user struct {
      name string
      gender string
      //addr address //结构体嵌套,访问 user1.addr.city
      address //可以用匿名嵌套结构体(推荐), 访问user1.city或user1.address.city(名称冲突时用)   写成" *address " 表示指针
    }


    func main() {
      user1 := user{
        name: "小王子",
        gender: "男",
        address: address{         //  写"&address" 返回地址,上面定义时要用指针接收
          Province: "山东",
          City: "威海",
        },
      }
    }

    模拟“继承”,
    公共的属性定义在父匿名结构体中,这样在子结构体方法父结构体方法都能访问该属性

    //animal 动物
    type animal struct {
      name string
    }

    //dog 狗
    type dog struct {
      feet int8
      *animal       //通过嵌套匿名结构体实现继承,原理是animal中的字段可以通过dog对象直接访问
    }

    func (a *animal) move() {
      fmt.Printf("%s会动", a.name)
    }

    func (d *dog) wang() {
      fmt.Printf("%s会汪汪汪...", d.name)
    }

    func main() {
      d1 := &dog{
        feet: 4,
        animal: &animal{        //注意嵌套的是结构体指针
          name: "乐乐",
        },
      }
      d1.wang()    //乐乐会汪汪汪~
      d1.move()    //乐乐会动!
    }

    结构体匿名字段(知道就行,很少用)

    type Person struct {
             string //结构体匿名字段,相同类型只能有一个,默认把类型当名字 p.string
             int
    }

    11

  • 相关阅读:
    开发stark组件
    关于AJAX与form表单提交数据的格式
    博客小项目
    Django Orm 常用字段和参数
    IIS启用兼容模式设置(win2k3—Win7)
    C#调用java类、jar包方法(转)
    解决VML遭遇IE8和XHTML DOCTYPE时不能运行的问题(转)
    Nice Validator(Form验证)及Juery zTree控件
    ASP.NET程序中 抛出"Thread was being aborted. "异常(转)
    SQL语句Where中使用别名作为判断条件
  • 原文地址:https://www.cnblogs.com/staff/p/13223421.html
Copyright © 2011-2022 走看看