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)

原文发表时间:2016-11-08

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏无所事事者爱嘲笑

vue要点记录(待更新)

1743
来自专栏技术博文

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

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

4205
来自专栏xingoo, 一个梦想做发明家的程序员

简单选择排序

选择排序时间复杂度也为O(n^2) 算法思想: 选择排序即每次length-i的长度内选择一个最小的元素,与第一个进行替换,这样大循环length次后,就可以得...

2276
来自专栏Golang语言社区

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

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

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

Emmet 常用语法

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

873
来自专栏GreenLeaves

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

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

1919
来自专栏行者常至

02.爬虫基础知识与简易爬虫实现

1010
来自专栏Golang语言社区

深入解析 Go 中 Slice 底层实现

切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和...

1152
来自专栏vue学习

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

1632
来自专栏前端架构与工程

jQuery源码——.html()方法原理解析

在将字符串转化为html碎片时,一般会将字符串作为容器的innerHTML属性赋值。但innerHTML有很多局限性,比如我们想转化的字符串中有<script>...

2328

扫码关注云+社区

领取腾讯云代金券