Go语言学习笔记 --- method
来源:互联网 发布:了凡四训 知乎 编辑:程序博客网 时间:2024/06/05 22:35
学习笔记根据 无闻 go语言基础教程 整理
method
- Go 中没有class, 但依旧有method
- 通过显式说明receier来实现与某个类型的组合
- 只能为同一个包中的类型定义方法
- Receiver可以是类型的值或指针
- 不存在方法重载
- 可以使用值或指针来调用方法,编译器会自动完成转换
- 从某种意义上来说,方法是函数的语法糖,因为reveiver其实就是方法所接收的第一个参数(Method Value vs. Method Expression)
- 如果外部结构和嵌入结构存在同名方法,则优先调用外部结构的方法
- 类型别名不会拥有底层类型所附带的方法
- 方法可以调用结构中的非公开字段。
- 示例代码:
package mainimport ( "fmt")type A struct { Name string Age int grade string // 私有字段 以package为级别,都是公有的,不同包都是私有的}type TZ int // 初始化一个int型的类型别名 TZfunc main() { test1() test2() test3() test4() test5() test6()}// 定义 A 的方法 Print 结构为: func + 接收者 + 方法名 ; go语言中没有重载的概念func (a A) Print() { fmt.Println("A")}// 设置名称 内部值拷贝func (a A) SetName() { a.Name = "A"}// 设置年龄 内部指针拷贝func (a *A) SetAge() { a.Age = 10}// 设置年级 访问私有字段func (a *A) SetGrade() { a.grade = "g3"}// 为 TZ 类型的a 绑定一个Print方法func (a *TZ) Print() { fmt.Println("TZ")}// 普通测试func test1() { a := A{} a.Print() // A}// 测试值拷贝func test2() { a := A{} a.SetName() fmt.Println(a.Name) // "" // 输出零值, 空字符串 , 说明:此处值拷贝,未修改成功。}// 测试指针拷贝func test3() { a := A{} a.SetAge() fmt.Println(a.Age) // 10 // 此处修改成功}// 测试类型别名绑定的方法 method valuefunc test4() { var a TZ a.Print() // TZ}// 测试 method expression 的写法func test5() { var a TZ (*TZ).Print(&a) // TZ // 这种方法}// 测试私有字段的访问权限func test6() { a := A{} (*A).SetGrade(&a) // 通过 method expression 的写法 同 a.SetGrade() fmt.Println(a.grade) // "g3"}
阅读全文
0 0
- Go语言学习笔记 --- method
- go语言学习-method和function
- Go语言学习笔记
- Go语言学习笔记
- go语言学习笔记
- Go语言学习笔记
- GO语言学习笔记
- Go语言学习笔记
- GO语言学习笔记
- Go语言学习笔记
- Go语言学习笔记
- Go语言学习笔记
- go语言学习笔记
- GO 学习笔记 (三) : method 和 interface
- Go语言学习之method(The way to go)
- Go语言基础:method
- GO语言method
- Go学习笔记-go语言基础
- Url 初步介绍
- JavaScript’s ‘this’ Keyword
- 在Ubuntu64位下安装srilm详细步骤
- SQL基础
- Java设计模式之策略模式
- Go语言学习笔记 --- method
- linux命令行将已有项目提交到github
- 第十六天总结
- 浅谈扩展KMP
- Java异常的深入研究与分析
- 反射
- Mysql分区表 介绍和使用
- 在百度搜了几个eclipse配置Tomcat服务的教程
- Redis 连接命令