`
xxtianxiaxing
  • 浏览: 655138 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

go语言值传递与址传递

    博客分类:
  • Go
阅读更多

go语言值传递与址传递:

  1. 值传递是对源结构体拷贝的操作;
  2. 址传递是对源结构体的操作;
package main

import (
	"fmt"
)

type BigStruct struct {
	C01 uint64
}

func Invoke1(a *BigStruct) uint64 {
	a.C01++
	return a.C01
}

func Invoke2(a BigStruct) uint64 {
	a.C01++
	return a.C01
}

func (a *BigStruct) Invoke3() uint64 {
	a.C01++
	return a.C01
}

func (a BigStruct) Invoke4() uint64 {
	a.C01++
	return a.C01
}

func main() {
	var a = new(BigStruct)
	for i := 0; i < 3; i++ {
		fmt.Println("指针传递:", Invoke1(a))
	}

	var b = BigStruct{}
	for i := 0; i < 3; i++ {
		fmt.Println("值传递:", Invoke2(b))
	}

	var c = BigStruct{}
	for i := 0; i < 3; i++ {
		fmt.Println("指针传递:", c.Invoke3())
	}

	var d = BigStruct{}
	for i := 0; i < 3; i++ {
		fmt.Println("值传递:", d.Invoke4())
	}
}

 运行结果:

[ /labs02/ ] # go run labs02.go
	指针传递: 1
	指针传递: 2
	指针传递: 3
	值传递: 1
	值传递: 1
	值传递: 1
	指针传递: 1
	指针传递: 2
	指针传递: 3
	值传递: 1
	值传递: 1
	值传递: 1

 

参考:https://github.com/realint/labs/blob/master/src/labs02/labs02_test.go

分享到:
评论

相关推荐

    Go语言入门指南大纲及框架建议:轻松掌握Go语言学习秘诀.docx

     函数参数传递(值传递与引用传递)  函数返回值  匿名函数(闭包)  方法与接收者 7. 数组与切片  数组的定义与使用  切片的定义与操作  切片的扩容与截断  append函数的使用  数组与切片的转

    【文件夹】Go语言并发之道.pdf

    你将理解 Go语言为何选定这些并发模型,这些模型又会带来什么问题,以及你如何组合利用这些模型中的原语去解决问题。学习那些让你在独立且自信的编写与实现任何规模并发系统时所需要用到的技巧和工具。 理解Go语言...

    go语言的应运

    ●go的参数传递,都是值的...● go语言的声明 min,max :=0,100 (int类型) var s string (string类型) ● 位钱:是一种使用加密手段制作的分布式电子货币。 位钱地址编码使用EncodeBase58Check函数。(电子支付手段)

    env:用于解析环境变量的 Go 语言库 一般情况下项目启动时需要的配置参数,都是通过环境变量传递的 该项目就是 Go 语言用来

    env:用于解析环境变量的 Go 语言库。一般情况下项目启动时需要的配置参数,都是通过环境变量传递的。该项目就是 Go 语言用来解析环境变量的库,它简单、体积小、零依赖。 package main import ( "fmt" "time" ...

    是一本全面介绍 Go 编程语言的权威指南 它涵盖了 Go 语言的语法、特性、标准库和最佳实践,适合新手和有经验的开发者阅读

    Basic Data Types: 讲解了 Go 语言的基本数据类型,包括整数、浮点数、布尔值、字符串等,并介绍了类型转换和常量。 Composite Types: 介绍了 Go 语言的复合数据类型,包括数组、切片、映射、结构体等,并讲解了...

    Golang Sample.zip

    3_4值传递与引用传递.go 4_1方法的继承.go 4_2方法的重写.go 5_1接口的定义和实现.go 5_2接口的继承.go 5_3接口转换.go 6_1通过if实现类型断言.go 7_1error接口应用.go 7_2Panic.go 7_3Recover.go 8_1字符...

    GO语言学习文档,适合初级入门学习

    GO是一个以通用系统语言为设计目标的系统级语言, 如 C++. 以下是针对C++程序员的一些学习拉摘要. 这文章主要讨论GO和C++的不同。 对于更一般的介绍,请另参网站其它文章: 概念不同 * GO没有带构建器和...

    Go语言视频教学(2).txt

    ├─L002-Go语言-mp4 │ 01 Go开发1期 day2 回顾-基本类型.mp4 │ 02 Go开发1期 day2 包的概念.mp4 │ 03 Go开发1期 day2 函数和常量.mp4 │ 04 Go开发1期 day2 值类型和引用类型.mp4 │ 05 Go开发1期 day2 函数参数...

    Go语言中函数的参数传递与调用的基本方法

    默认情况下,Go编程语言使用调用通过值的方法来传递参数。在一般情况下,这意味着,在函数内码不能改变用来调用所述函数的参数。考虑函数swap()的定义如下。 代码如下: /* function definition to swap the values ...

    GO语言中的方法值和方法表达式的使用方法详解

    Go语言也称 Golang,兼具效率、性能、安全、健壮等特性。 Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验就可以轻松搞定。本文重点给大家介绍go 方法值和方法表达式的知识。 手册上关于这块的...

    Go语言中普通函数与方法的区别分析

    本文实例分析了Go语言中普通函数与方法的区别。分享给大家供大家参考。具体分析如下: 1.对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。 2.对于方法(如struct的方法),接收者为值类型...

    详解 Go 语言中 Map 类型和 Slice 类型的传递

    主要介绍了详解 Go 语言中 Map 类型和 Slice 类型的传递的相关资料,需要的朋友可以参考下

    Golang数组的传递详解

    今天小编就为大家分享一篇关于Golang数组的传递详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Go语言中slice作为参数传递时遇到的一些“坑”

    主要给大家介绍了关于Go语言中slice作为参数传递时遇到的一些“坑”,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

    与语言无关的可扩展实时消息传递服务器-Golang开发

    它与语言无关,可以与以任何编程语言编写的应用程序后端结合使用。 Centrifugo作为单独的服务运行,并保持持久的Websocket或SockJS Centrifugo是与语言无关的可扩展实时消息服务器。 Centrifugo与以任何编程语言编写...

    基于GO语言大型企业级电商秒杀系统实战教程

    1.采用消息队列缓存请求:既然服务器层知道库存只有100台手机,那完全没有必要把100w个请求都传递到数据库里,那么可以先把这些请求都写到消息队列里面缓存一下,数据库层订阅消息减少库存,减库存成功的请求返回...

    V8​的Go语言封装v8worker.zip

    v8worker 是 V8 的 Go 语言封装版本。输出一个非堵塞消息传递接口到 V8 引擎。Go 和 JavaScript 通过消息的收发进行交互。V8 只在计算 JavaScript 的时候堵塞 goroutine 线程,没有任何 syscalls 系统调用。只提供三...

    用纯Go语言编写的小型简单图像查看器。-Golang开发

    支持goiv用纯Go语言编写的小而简单的图像查看器。 功能支持JPEG,PNG,GIF,BMP,PCX,TIFF,PBM,PGM,PPM,WEBP,PSD和TGA格式。 将图像缩放到窗口大小并保留宽高比。 支持作为参数传递的HTTP URL。 跨平台(注意...

    Bpp:用Go语言编写的B ++解释器!

    用Go语言编写的B ++解释器! 安装 要安装或更新B ++,请执行 go get -u github.com/Nv7-Github/Bpp 基本用法 要运行文件,请执行 bpp -file filename 例如,要运行kin示例,请执行 bpp -file examples/kin.bpp ...

Global site tag (gtag.js) - Google Analytics