其实effectiv go里面说的很清楚了
http://weekly.golang.org/doc/effective_go.html#pointers_vs_values
我这里写了个例子,还是不明白的话,我在详细解释下
package main
import "log"
type PointerMethodInvoke struct{
Foo string
}
func (this *PointerMethodInvoke) ChangeFoo(foo string){
this.Foo = foo
log.Println("change Foo,result is :",this.Foo)
}
type ValueMethodInvoke struct{
Foo string
}
func (this ValueMethodInvoke) ChangeFoo(foo string){
this.Foo = foo
log.Println("change Foo,result is :",this.Foo)
}
func main() {
pointerMethodInvoke := new(PointerMethodInvoke)
pointerMethodInvoke.Foo = "foo"
log.Println(pointerMethodInvoke.Foo)
pointerMethodInvoke.ChangeFoo("bar")
log.Println(pointerMethodInvoke.Foo)
valueMethodInvoke := new(ValueMethodInvoke)
valueMethodInvoke.Foo = "foo"
log.Println(valueMethodInvoke.Foo)
valueMethodInvoke.ChangeFoo("bar")
log.Println(valueMethodInvoke.Foo)
}
输出:
2011/12/16 15:03:48 foo
2011/12/16 15:03:48 change Foo,result is : bar
2011/12/16 15:03:48 bar
2011/12/16 15:03:48 foo
2011/12/16 15:03:48 change Foo,result is : bar
2011/12/16 15:03:48 foo
分享到:
相关推荐
这可以是随机生成的字符串,但必须确保在加密和解密过程中使用的是相同的密钥。 2. **初始化向量(IV)**:在某些加密模式中,如CBC或CFB,需要一个初始化向量,但ECB模式不需要IV,因此你可以留空或提供任何值,`...
在网络安全认证领域,digest用户认证是一种使用摘要算法对用户凭证进行加密验证的技术,它允许在不安全的网络通道中安全地进行身份验证。digest认证机制通常用于基于HTTP和SIP(Session Initiation Protocol)协议的...
3.使用json数组替代bpmn来生成流程定义,简化流程定义的生成 二、go-workflow框架 1.go-workflow 数据库设计 1.1 流程定义表 表 procdef 用于保存流程的配置, 主要字段有: name: 流程定义的名称,如:"请假流程" ...
gontlmssp ... 来自协议详细信息来自实现提示 该软件包仅实现身份验证,不进行密钥交换或加密。 它仅支持协议字符串的Unicode(UTF16LE)编码,不支持OEM编码。 该软件包实现了NTLMv2。 用法 ... Transport: ntlmssp....
在本文中,我们将详细介绍如何在Windows 10操作系统上搭建Golang 1.13.5的开发环境,包括使用Go module进行项目管理。首先,我们来看一下搭建环境的步骤。 一、安装Golang 1. 访问Golang官方网站...
goHttpDns, Go编写的HttpDns服务器 goHttpDns 为了避免Dns劫持和缓存解析问题,HttpDns服务器编写了一个服务器:如何编译cd $GOPATH;git clone http://github.com/zheng-ji/goHttpDn
我们的目标是减少使用API时经常会遇到的默认功能的开发时间。 下面介绍了一组有用的工具。 随时贡献! 概述这是一个基于Gin框架的API框架项目。 我们的目标是减少使用API时经常会遇到的默认功能的开发时间。...
`golang.org/x` 是 Go 语言生态系统中的一个特殊仓库,包含了由 Go 语言官方维护但并未包含在标准库中的各种模块和工具。这个仓库包含了众多实用的第三方组件,如网络编程库、数据库驱动、文本处理工具等。由于 `...