当前位置:网站首页>Go 匿名字段与实现重写方法
Go 匿名字段与实现重写方法
2022-08-08 08:34:00 【dj1540225203】
如何为匿名字段?比如一个结构体中包含另外一个结构体作为属性,例子:
type User struct {
id int
name string
}
type Manager struct {
User
}
User即为匿名字段
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}
方法重新:如重新User的方法
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}
边栏推荐
猜你喜欢
随机推荐
【图像分类】2021-CoAtNet NeurlPS
STL 底层实现原理
安装oracle19c时报错DBT-50000
Kotlin Compose MiUI13.0.4 版本 Livedata不生效
BLOB, TEXT, GEOMETRY or JSON column 'xxxx' can't have a default value
2022/8/7
Data Governance (3): Data Quality Management
lvm建立逻辑卷
六十分之七——焦虑路上的涅槃
数学基础(一)矩阵对角化、SVD分解以及应用
面试官:工作中用过锁么?说说乐观锁和悲观锁的优劣势和使用场景
[ 深度学习 ] 课程学习(Curriculum Learning)
用平衡二叉搜索树解决硬木种类问题
PhpStudy 2016搭建-DVWA靶场
两个联动的可扩展收起的textView的简单实现
方案 | 医疗单据OCR识别,为医保零星报销打造安全屏障
【优化调度】基于粒子群实现并网模型下微电网的经济调度优化附matlab代码
oracle如何删除表并且释放表空间
图数据科学和机器学习图数据科学GDS概览
看顶级测工怎么玩转Apifox接口测试工具