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

  • 相关阅读:
    HDOJ 4276 The Ghost Blows Light
    Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结
    $.ajax()方法详解
    jQuery Ajax 实例 ($.ajax、$.post、$.get)
    gitHub优秀android项目
    Android JSON
    SQL 设置自增,和default
    POST JSON fails with 415 Unsupported media type, SpringMVC
    23种设计模式
    转 Android_开源框架_AndroidUniversalImageLoader网络图片加载
  • 原文地址:https://www.cnblogs.com/staff/p/13223421.html
Copyright © 2011-2022 走看看