Go学习笔记02
来源:互联网 发布:w7内外网转换软件 编辑:程序博客网 时间:2024/06/01 07:49
Go的多态
// test.go project main.gopackage mainimport ( "fmt")func init() {}type user struct { name string age int}func (u *user) notify() { fmt.Printf("User %v, age %v\n", u.name, u.age)}type admin struct { name string age int qq string}func (u *admin) notify() { fmt.Printf("Admin %v, age %v, qq %v\n", u.name, u.age, u.qq)}type Notifyer interface { notify()}func sendNotify(n Notifyer) { n.notify()}func main() { u1 := user{ name: "zhangsan", age: 17, } a1 := admin{ name: "lisi", age: 99, qq: "12306", } sendNotify(&u1) sendNotify(&a1)}
Go的继承
// test.go project main.gopackage mainimport ( "fmt")func init() {}type user struct { name string age int}func (u *user) notify() { fmt.Printf("User %v, age %v\n", u.name, u.age)}type admin struct { user level string}func main() { u1 := admin{ user: user{ name: "zhangsan", age: 17, }, level: "aaaa", } fmt.Println(u1.age) // 将User的age提升到了admin u1.notify() // 这里将user的方法提升到admin u1.user.notify() }
但是,admin是可以覆盖user的行为的:
// test.go project main.gopackage mainimport ( "fmt")func init() {}type user struct { name string age int}func (u *user) notify() { fmt.Printf("User %v, age %v\n", u.name, u.age)}type admin struct { user age int level string}func (u *admin) notify() { fmt.Printf("Admin %v, age %v, level %v\n", u.name, u.age, u.level)}func main() { u1 := admin{ user: user{ name: "zhangsan", age: 17, }, age: 99, level: "aaaa", } fmt.Println(u1.age, u1.user.age) // 这两个是不一样的,前者属于admin的99,后者为user的17 u1.notify() // 调用 admin的notify u1.user.notify() // 调用user的notify}
总结:go没有完全脱离C++的影子,它的基本的原理遵循C++的思想。
阅读全文
0 0
- Go学习笔记02
- 【Go学习笔记】Hello Go!
- Go语言学习笔记
- Go学习笔记
- go学习笔记
- Go语言学习笔记
- go语言学习笔记
- Go学习笔记
- Go学习笔记(2)
- Go语言学习笔记
- go学习笔记
- Go学习笔记:interface
- GO语言学习笔记
- Go语言学习笔记
- GO语言学习笔记
- Go Template学习笔记
- Go学习笔记一
- 【GO学习笔记】-0321
- QT使用记录关于调用DLL库文件出现的问题
- FastQC 质控软件的下载及使用方法(一)
- Netty线程模型
- 【C#】关于c#中委托的解释
- HTML学习---------1.19 为表格添加标题和摘要
- Go学习笔记02
- ccs5.5 编译错误
- JAVA并行流导致的 No thread-bound request found
- Linux---RH254---unit 6 NFS
- hdu 5971 Wrestling Match 判断能否构成二分图 [Problem A]2016ACM/ICPC亚洲区大连站
- Netty异步IO和回调函数
- Android---------HttpURLConnection的 get 请求和 post 请求(更容易理解)
- HDU 1532 Drainage Ditches——最大流EK算法
- phpcms v9网站搬家更换域名的方法