go匿名字段

匿名字段

Golang匿名字段 :可以像字段成员那样访问匿名字段方法,编译器负责查找。

package main

import "fmt"

type User struct {
    id   int
    name string
}

type Manager struct {
    User
}

func (self *User) ToString() string { // receiver = &(Manager.User)
    return fmt.Sprintf("User: %p, %v", self, self)
}

func main() {
    m := Manager{User{1, "Tom"}}
    fmt.Printf("Manager: %p\n", &m)
    fmt.Println(m.ToString())
}

输出结果:

    Manager: 0xc42000a060
    User: 0xc42000a060, &{1 Tom}

通过匿名字段,可获得和继承类似的复用能力。依据编译器查找次序,只需在外层定义同名方法,就可以实现 "override"。

package main

import "fmt"

type User struct {
    id   int
    name string
}

type Manager struct {
    User
    title string
}

func (self *User) ToString() string {
    return fmt.Sprintf("User: %p, %v", self, self)
}

func (self *Manager) ToString() string {
    return fmt.Sprintf("Manager: %p, %v", self, self)
}

func main() {
    m := Manager{User{1, "Tom"}, "Administrator"}

    fmt.Println(m.ToString())

    fmt.Println(m.User.ToString())
}

输出结果:

    Manager: 0xc420074180, &{{1 Tom} Administrator}
    User: 0xc420074180, &{1 Tom}

相关推荐

  1. go匿名字段

    2024-05-10 09:42:10       10 阅读
  2. Go匿名函数与闭包

    2024-05-10 09:42:10       12 阅读
  3. go-zero读取mysql部分字段

    2024-05-10 09:42:10       30 阅读
  4. Go 反射技术判断结构体字段数据为空

    2024-05-10 09:42:10       41 阅读
  5. Go 数据结构】列表与字典

    2024-05-10 09:42:10       13 阅读
  6. Go基础——字节、字符、字符串

    2024-05-10 09:42:10       11 阅读
  7. Python——lambda匿名函数

    2024-05-10 09:42:10       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 09:42:10       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 09:42:10       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 09:42:10       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 09:42:10       18 阅读

热门阅读

  1. k8s集群的常用命令

    2024-05-10 09:42:10       11 阅读
  2. Django框架之Ajax基础

    2024-05-10 09:42:10       7 阅读
  3. 什么是图片的像素与分辨率?

    2024-05-10 09:42:10       8 阅读
  4. 机器学习过拟合解决方案 - 正则化

    2024-05-10 09:42:10       13 阅读
  5. 数据结构及算法——数组和字符串一些记录

    2024-05-10 09:42:10       11 阅读
  6. 分布式本地缓存刷新-日常笔记

    2024-05-10 09:42:10       7 阅读
  7. zookeeper之分布式环境搭建

    2024-05-10 09:42:10       10 阅读
  8. Spring事务失效场景

    2024-05-10 09:42:10       14 阅读
  9. Android OpenMAX(七)OMX Service

    2024-05-10 09:42:10       15 阅读
  10. 【48】Camunda8-Self-Managed部署

    2024-05-10 09:42:10       12 阅读
  11. HTTP调用API框架Forest

    2024-05-10 09:42:10       10 阅读
  12. MongoDB 从部署到掌握

    2024-05-10 09:42:10       13 阅读