[GO]方法集
指针变量的方法集
package main
import "fmt"
type Person struct {
name string
sex byte
age int
}
func (p Person) SetValueInfoValue() {
fmt.Println("SetValueInfoValue")
}
func (p *Person) SetValueInfoPointer() {
fmt.Println("SetValueInfoPointer")
}
func main() {
//结构体变量是一个指针变量,它能够调用哪些方法,这些方法就是一个集合,简称方法
p := &Person{} //这里的就是一个指针类型了
p.SetValueInfoValue() //func (p *Person) SetValueInfoPointer(),但其实它也可以使用下面的方式调用
(*p).SetValueInfoPointer() //这里其实在内部,把(*p)转换成p后再调用,等价于上面
//内部做的转换,先把指针p,转换成*p再调用
(*p).SetValueInfoPointer()
p.SetValueInfoValue()
//用实例value和pointer调用方法(含匿名突)不受方法集约束,编译器问题查找全部方法,并自动转换receiver实参
p.SetValueInfoPointer()
}
执行结果
SetValueInfoValue SetValueInfoPointer SetValueInfoPointer SetValueInfoValue SetValueInfoPointer
普通变量的方法集
package main
import "fmt"
type Person struct {
name string
sex byte
age int
}
func (p Person) SetValueInfoValue() {
fmt.Println("SetValueInfoValue")
}
func (p *Person) SetValueInfoPointer() {
fmt.Println("SetValueInfoPointer")
}
func main() {
p := Person{}
p.SetValueInfoPointer() //这里方法需要的其实是一个指针类型,但这里依然可以编译通过,在内部,先反p转换为&p再调用,
}
[GO]方法集的更多相关文章
- JS方法集
数组方法集 Angela.array = { //# 数组方法 // index, 返回位置! 不存在则返回 -1: index: function (t, arr) { //# 返回当前值所在数组的 ...
- 【终结版】C#常用函数和方法集汇总
C#里面的常用的函数和方法非常重要,然而做题的时候会经常忘记这些封装好的方法,所以我总结一下 C#常用函数和方法集. [1]C#操作字符串的常用使用方法 在 C# 中,您可以使用字符数组来表示字符串, ...
- Go的方法集
方法集定义了接口的接受规则. package main import "fmt" type notifier interface { notify() } type user st ...
- go语言之进阶篇普通变量的方法集
1.普通变量的方法集 示例: package main import "fmt" type Person struct { name string //名字 sex byte // ...
- go语言之进阶篇指针类型和普通类型的方法集
方法集 类型的方法集是指可以被该类型的值调用的所有方法的集合. 用实例实例 value 和 pointer 调用方法(含匿名字段)不受方法集约束,编译器编总是查找全部方法,并自动转换 receiver ...
- c#.net常用函数和方法集
1.DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.D ...
- legend---三、方法集思路
legend---三.方法集思路 一.总结 一句话总结:其实也就是工具包思路,会极大的简化编程,清晰逻辑 1.多if转换成简洁单if怎么实现? 下面这段代码是错的,if的这种写法只适合直接return ...
- go语言规范之方法集
Go语言规范里定义的方法集的规则 Values Methods Receivers ----------------------------------------------- T (t T) *T ...
- Go语言接口内部布局和方法集详解
1. 接口值内部布局 如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值.这个赋值会把用户定义的类型的值存入接口类型的值.赋值完成后得到的值称 ...
随机推荐
- [转]MySQL 经验集
-- my.ini -> 在 [mysqld] 节点下加入一行 skip-grant-tables 然后重启服务 -- 接下来无密码登录到 mysql 执行以下命令 use mysql show ...
- 安全人员常用的python库
如果你对漏洞挖掘.逆向工程分析或渗透测试感兴趣的话,我第一个要推荐给你的就是Python编程语言.Python不仅语法简单上手容易,而且它还有大量功能强大的库和程序可供我们使用.在这篇文章中,我们会给 ...
- lamp与lnmp的选择
lnmp和lamp业务上的不同 由于二者仅仅是区别在于web的选择,nginx更高效,占用资源更少,详情区别查看LNMP环境应用实践 lnmp和lamp安装上的不同 生产环境中,可能会遇到lamp架构 ...
- Linux系统命令与脚本开发
系统命令 # cat EFO cat >> file << EOF neirong EOF # 清空 >file 清空文件 [root@Poppy conf]# sed ...
- C++四种强制转换
C++的四种强制类型转换,所以C++不是类型安全的.分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast 为什么使用C风格的强制 ...
- node中转换URL字符串与查询字符串
一个完整的URL字符串中,从"?"(不包括?)到"#"(如果存在#)或者到该URL字符串结束(如果不存在#)的这一部分称为查询字符串. 可以使用Query St ...
- OD 实验(二十一) - 对反调试程序的逆向分析(二)
程序: 运行程序 点击“Verify” 关闭该程序,启动 OD 再运行程序 逆向: 用 OD 载入程序 按 F8 往下走 执行完这个 call 指令就弹出了对话框 这个 call 指令调用了 Dial ...
- [CSAPP] The Unicode Standard for text coding
The ASCII is only suitable for encoding English-language documents. It's hard for us to encode the s ...
- 初识Dash -- 构建一个人人都能够轻松上手的界面,操控数据和可视化
从事数据科学工作,少不了使用Pandas.scikit-learn这些Python生态系统中的利器,还有就是控制工作流的Jupyter Notebooks,没的说,你和同事都爱用.但是,要想将工作成果 ...
- PHP - 模拟HTTP请求, stream_context_create 和 fopen 和 fsockopen
一.fsocketopen,使用这个的过程看起来更像别的语言的socket编程 public function send($request) { /* 请求数据 */ $post_data = $re ...