当前位置:网站首页>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}
边栏推荐
猜你喜欢
HyperLynx(三)传输线类型及相关设置
微服务:事务管理
【树莓派】vim编辑器
Kotlin Compose MiUI13.0.4 版本 Livedata不生效
数据治理(三):数据质量管理
Offensive and defensive world - ics-05
Raspberry pie 】 【 without WIFI even under the condition of the computer screen
What exactly happens after entering the URL in the browser?
matlab simulink串级变比值模糊PID烟气脱硫浆液pH值控制
Defense - MFW all over the world
随机推荐
【office】word
生成密码字典的方法
制作SD启动卡,从SD卡启动系统
【Enumeration】Continuous factor
大文件上传时如何做到 秒传?
手机APP测试流程规范和方法你知道多少?
X射线聚焦系统
数据治理(三):数据质量管理
HTTS 为什么更安全?
jupyter lab内终端从sh变为bin/bash(切换conda操作)
【树莓派】在没有显示屏的情况下通过WIFI连电脑
攻防世界——fakebook
【图像分类】2021-CoAtNet NeurlPS
用于一型糖尿病血糖调节的无模型iPID控制器
ACWing 198. Antiprime Problem Solution
Matlab实现异构交通流
WinForm(四)一种实现登录的方式
Kotlin Compose MiUI13.0.4 版本 Livedata不生效
[Raspberry Pi] vim editor
【优化调度】基于粒子群实现并网模型下微电网的经济调度优化附matlab代码