Go-指针、传值与传引用、垃圾回收

要点

  • Go使用的*、&、new()这些运算符,和C++的用法完全一样。
  • 有传值和传引用/传地址的概念,和C++一样。
  • Go没有new对应的delete操作,而是采用Java一样的垃圾自动回收机制。
  • 传引用或指针主要用于用户自定义类型。

示例

package main
import "fmt"

/*
D:\examples>go run helloworld.go
10
100
5
100

D:\examples>
*/
func main() {
    i := 10 

    pass_by_value(i)
    fmt.Println(i)

    pass_by_reference(&i)
    fmt.Println(i)

    x := new(int)
    *x = 5 
    fmt.Println(*x)

    pass_by_reference(x)
    fmt.Println(*x)
}

func pass_by_value(i int) {
    i = 100
}

func pass_by_reference(i *int) {
    *i = 100
}

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-04-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小程序的道路

小程序渲染

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。通过遍历数据,将数据展示,类似vue中的 v-for。 wx:for-...

16220
来自专栏vue学习

前端面试题总结(持续更新。。)

17020
来自专栏Golang语言社区

go 切片使用小结

最新项目使用go语言开发,因此有机会结识了go语言。在写代码时,无意间发现了同事代码的一个bug。今天拿来一起学习一下。 首先go语言有个强大的基本数据结构,那...

34580
来自专栏Nian糕的私人厨房

Emmet 常用语法

Emmet 是一个能大幅度提高前端开发效率的一个工具,通过在编辑器中输入 HTML 或 CSS 的代码缩写,按 Tab 键即可拓展为完整的代码片段,本文主要...

9130
来自专栏柠檬先生

Angularjs基础(十)

ng-blur  描述:规定blur 事件的行为       实例:当输入框失去焦点的(onblur)时执行表达式:         <input ng...

20750
来自专栏Golang语言社区

Go-指针、传值与传引用、垃圾回收

要点 Go使用的*、&、new()这些运算符,和C++的用法完全一样。 有传值和传引用/传地址的概念,和C++一样。 Go没有new对应的delete操作,而是...

33450
来自专栏技术博文

js去掉字符串前后空格的五种方法

第一种:循环检查替换 [javascript] //供使用者调用   function trim(s){   return trimRight(trimLeft...

43850
来自专栏GreenLeaves

JavaScript之共享onload

我们知道,当我们将JS代码脚本放到<head></head>标签之间时,这是的js代码加载要先于DOM加载,而我们往往会在JS代码脚本中写一些获取DOM元素的代...

19680
来自专栏GreenLeaves

Jquery 触发器之treigger()方法简介

trigger是个很神奇的东西,它可以模拟简单的用户输入操作。并触发点击click, mouseover, keydown 等事件. 具体使用方法如下: $("...

19590
来自专栏开发与安全

从零开始学C++之IO流类库(四):输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)

一、以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符。把它们作为插入操作符<<的输出对象即可。如setiosflags、...

25200

扫码关注云+社区

领取腾讯云代金券