
正文
go语言实验楼 go语言实践
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
golang-101-hacks(12)——切片作为函数参数传递
注:本文是对 golang-101-hacks 中文翻译。
在Go语言中,函数参数是值传递。使用slice作为函数参数时,函数获取到的是slice的副本:一个指针,指向底层数组的起始地址,同时带有slice的长度和容量。既然各位熟知数据存储的内存的地址,现在可以对切片数据进行修改。让我们看看下面的例子:
In Go, the function parameters are passed by value. With respect to use slice as a function argument, that means the function will get the copies of the slice: a pointer which points to the starting address of the underlying array, accompanied by the length and capacity of the slice. Oh boy! Since you know the address of the memory which is used to store the data, you can tweak the slice now. Let's see the following example:
运行结果如下
由此可见,执行modifyValue函数,切片s的元素发生了变化。尽管modifyValue函数只是操作slice的副本,但是任然改变了切片的数据元素,看另一个例子:
You can see, after running modifyValue function, the content of slice s is changed. Although the modifyValue function just gets a copy of the memory address of slice's underlying array, it is enough!
See another example:
The result is like this:
而这一次,addValue函数并没有修改main函数中的切片s的元素。这是因为它只是操作切片s的副本,而不是切片s本身。所以如果真的想让函数改变切片的内容,可以传递切片的地址:
This time, the addValue function doesn't take effect on the s slice in main function. That's because it just manipulate the copy of the s, not the "real" s.
So if you really want the function to change the content of a slice, you can pass the address of the slice:
运行结果如下
相关问答
Q1: go标准库有图形界面库吗
Go标准库本身没有提供官方的图形界面库,但是Go语言社区有很多第三方GUI库,如:fyne、walk、gotk3、ui、andlabs等。其中fyne比较轻量级,易于入门,支持跨平台开发;walk是一个Windows系统上比较流行的库,提供丰富的UI控件和工具,支持Windows底层的开发;gotk3是GTK+3的Go语言绑定库,可以开发跨平台的桌面应用程序。总之,虽然Go标准库没有内置图形界面库,但Go语言与其他语言的集成能力很强,可以使用C/C++的GUI库进行开发,也可以使用其他语言的GUI库进行开发。
Q2: 程序员一般都会用什么网站学习课程啊?求推荐专业又平价的,感谢!
1、慕课网
----------- 简介 -----------
提供了丰富go语言实验楼的移动端开发、php开发、web前端、android开发以及html5等视频教程资源公开课。
内容丰富go语言实验楼,更新较快go语言实验楼,有高质量的免费课程go语言实验楼,入门知识全搞定。还有由业界大牛讲解的实战项目课程,价格实惠,帮go语言实验楼你积累实践经验。
----------- 特点 -----------
所有课程分为入门、初级、中级、高级四类,为你安排最适合你的课程。以专门为慕课网学员录制的原创短视频课为主,配合试题练习。
按技术类别,划分了明确的职业路径,为你提供不同阶段应掌握的内容,不仅适合入门,也可以作为日后的进阶课程。
手记和问答模块,帮你快速解决学习上的难题。
专门的前沿技术模块,为你提供第一手的前沿技术教学。
----------- 适用 -----------
适合小白入门,特别是对各种岗位所需技术不太了解的同学,在慕课网可以更详细、更权威的了解各个技术岗位。也适合已经入行、有一定基础的同学提升拔高。
2、菜鸟教程
----------- 简介 -----------
提供了编程的基础技术教程,介绍了HTML、CSS、Javascript、Python、Java、Ruby、C、PHP、MySQL等各种编程语言的基础知识。同时也提供了大量的在线实例,通过实例,可以更好的学习编程。
----------- 特点 -----------
教程覆盖面广,囊括前端、后端、服务端、数据库、移动端、网络基础等各个方面。
教学内容基础、全面。所有属性都有明确、易懂的解释,包括一些不常用的属性也都有。适合大家作为工具书来使用。
完全免费,以文档教学为主,搭配试题练习
提供了各类程序员的学习路线图,让你明确知悉不同程序员的不同阶段,应该学习哪些内容。
----------- 适用 -----------
适合小白程序员的基础性学习,适合入行后作为工具书随时查阅。
3、51CTO学院
----------- 简介 -----------
提供辅导式“微职位”和自学式“视频课程”两种在线学习模式,涵盖Python、大数据、区块链、IT考证等培训领域。
“微职位”旨在解决系统提升技能、学习新技术、转行IT、全栈工程师的需求。学员必须通过每个阶段的考试才能进入下个阶段学习。
“视频课程”自主性较大,旨在解决模块化技能提升、项目实际问题、了解新技术的需求,有原创视频课,也有线下培训机构的录播课程。
----------- 特点 -----------
海量的视频课程,知识全面。
视频课程价格优惠,有好多课程对会员免费。
除编程类课程外,还有一些IT考证类课程(如软考)、通用技能类课程(如办公软件高效使用)。
独特的订阅专栏,行业一线大咖,为你打造专精且耐读的独家内容,让你技能提升、思维升级。
----------- 适用 -----------
适合对IT有一定认知和了解的同学,知道自己需要提高哪方面的知识。
不论是选择何种学习网站,学习都不是一朝一夕的事情,需要持续积累和输入,也需要源源不断的输出自己学到的知识,学以致用。程序员更是如此,在理论的支撑下,自己多多进行项目实践才是硬道理,抓紧学起来吧~
最后免费分享给大家一份Python全套学习资料,包含视频、源码,课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友。
Q3: Golang入门到项目实战 | golang简介及安装
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
go语言特点
go语言的应用领域
哪些公司(项目)在使用go语言
下载开发包
windows下安装
1.打开下载的msi可执行文件,根据提示进行安装。默认会安装在c:/Program Files/go目录下面。会自动添加go可执行文件环境变量。
2.验证安装情况
a.打开命令行
b. 输入$ go version
linux下安装
1.在/usr/local/下面创建一个目录go
2.下载压缩文件到该目录(/usr/local/go),并解压缩
3.添加/usr/local/go/bin到PATH环境变量,打开$HOME/.profile 或者/etc/profile输入如下内容:
4.执行如下命令使得配置文件及时生效
验证
1.如果你的mac有Homebrew包管理工具,可以使用它来安装
2.如果没有下载mac安装包,根据提示安装
3.默认安装在/usr/local/go下面
4.设置环境变量,同Linux
关于go语言实验楼和go语言实践的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






