golang 基础(12)指针

作者: zidea | 来源:发表于2019-03-17 19:18 被阅读5次
square-gopher.png

指针

在 go 语言中指针没有 c++ 中那么复杂,因为没有指针的运算。

什么时候用指针,也就是指针的用途

  • 可能结构相对复杂数据你不想在程序中传递数据,可以通过传递地址
  • 变量一致性

在多数语言中函数的参数传递有两种

  • 值传递
    值传递会保证没有 side effect,更改函数内的变量不会影响外面的变量
  • 引用传递
    go 语言中只有值传递一种方式
var cache Cache
func f(cache Cache)

大家都知道值传递是将变量复制一份用于函数,那么对于我们定义类型,复杂数据结构的类型作为参数传递给函数时如果也需要复制一份,其实不是浪费吗,这里 cache 对象中一个指向内存保存对象的地址 pData ,复制仅是对象的内存地址。


![images.png](https://img.haomeiwen.com/i8207483/3415fe5398e30ad2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

通常都会用到交换变量值的函数 swap 这里就用学到指针来实现一下,我们要交换 a 和 b 值

func swap(a, b int){
    b, a = a, b
}

func main(){
    a, b:= 3,4
    fmt.Println(a,b)
}

这样显然是不行的。


images.png

相关文章

  • Golang基础(三)——复杂类型

    Golang基础(三)——复杂类型 @([07] golang)[Go总结] [TOC] 指针 定义 指针变量可以...

  • golang 基础(12)指针

    指针 在 go 语言中指针没有 c++ 中那么复杂,因为没有指针的运算。 什么时候用指针,也就是指针的用途 可能结...

  • golang 基础(thirteen)指针

    数组 定义数组需要指定数组的大小和数组元素的类型 定义数组变量如果不给初始值,int 型会默认每一个元素值为 0 ...

  • 后端研发体系

    记录自己为了面试发现的文章 golang golang中都是值传递,没有引用传递,哪怕是指针,也是指针的值拷贝。 ...

  • 【Golang 基础】Go 语言的指针

    Go 语言的指针   变量是一种使用方便的占位符,用于引用计算机地址,而在 Go 语言中可以通过 & 符号获取一个...

  • golang指针

    关于指针,我的理解是这样的,它指向一个内存的地址,也就是某个类型在内存中存放的地方。 定义一个指针 var d *...

  • golang 指针

    在Go语言中,有几种东西可以代表“指针”。  1. uintptr类型:该类型实际上是一个数值类型,也是Go语言内...

  • golang 指针

    1.Golang提供了指针用于操作数据内存,并通过引用来修改变量。只声明未赋值的变量,golang都会自动为其初始...

  • golang 指针

    package main import "fmt" //=============================...

  • Golang:指针

    什么是指针? 指针是存储另一个变量的内存地址的变量。 在上面的例子中,变量 b 的值是 156,存储在地址为 0x...

网友评论

    本文标题:golang 基础(12)指针

    本文链接:https://www.haomeiwen.com/subject/lztpmqtx.html