[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. 接口值内部布局 如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值.这个赋值会把用户定义的类型的值存入接口类型的值.赋值完成后得到的值称 ...
随机推荐
- Macbook Pro上安装Windows 7虚机
折腾了大半天,终于搞定. 首先是安装VirtualBox,之后关键的是需要Win7虚机种子,百度了下去系统之家下的. 如果不是Ghost系统的话,VirtualBox可以直接load安装. 但是那边都 ...
- Java的Socket通信----通过 Socket 实现 TCP 编程之多线程demo(2)
JAVA Socket简介 所谓socket 通常也称作”套接字“,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过”套接字”向网络发出请求或者应答网络请求. import java.io ...
- 仅用CSS3创建h5预加载跳动圈
<head> <meta charset="UTF-8"> <title></title> <style type=" ...
- react-router4 嵌套路由
先直接贴代码 import React from 'react'; import ReactDOM from 'react-dom'; import { HashRouter as Router, R ...
- Swift 修改UITextField.Placeholder颜色
StoreNameEditTextField.attributedPlaceholder = NSAttributedString(string:"点此处输入门店名称",attri ...
- 流程管理软件(BPM)功能简介
易协流程管理系统实现将人为控制的业务活动,通过信息化手段实现系统控制,降低人为控制管理的风险以及促进企业的各项决策方针的顺利实施. 系统目标: 实现管理的规范化.制度化.程序化: 帮助企业将内控制度流 ...
- 模板导入 {include 模块名}
模板导入可以和上面讲的模板继承一起使用, 可以使用模板的批量复制和导入 下面举一个例子 我们先写一个需要导入模块的html tp1 {% extends 'master.html' %} {% bl ...
- C#与U3D中字符串尾0
static void TestChar0() {//注意字符串中0和\0的区别,如 s1="h0ello", s2 = "h\0ello" //s2中的\0是 ...
- [iOS]UIScrollView左右拨动,第二页宽度只有一半问题
用UIScrollView动态加入新View,而这个View是Xib方式创建,如果设置view的frame,这个view的宽度却只有设置的一半,很奇怪.于是我只设置view的frame的x值,不设置整 ...
- visjs使用小记-2.option参数注释说明
对部分参数进行中文说明,后续补充 var options = { nodes:{//节点配置 borderWidth: 1,//节点边框的宽度,单位为px borderWidthSelected: 2 ...