美文网首页
Go语言指针

Go语言指针

作者: AuglyXu | 来源:发表于2018-09-27 16:01 被阅读0次

只讲述和C语言地址的不同

  • 格式:
    var 指针名称 *数据类型
    var 指针名称 *数据类型 = 地址

指向数组的指针

  • 注意点: arr 和 &arr 和 &arr[0]不一样
    • &arr的类型是*[3]int

    • &arr[0]的类型是*int

    • Go语言中数据类型不同不能赋值

var arr [3]int = [3]int{1,3,5}
var p *[3]int = &arr
//用地址操作数组
//arr[0] = 666
(*p)[0] = 666

指向切片的指针

  • 有var sce []int = []int{1, 3, 5}
  • 注意点:
    1.切片的本质是一个结构体,结构体中的指针指向了底层的数组
    2.直接打印sce的地址,打印的是结构体保存的底层数组的地址([]int)
    3.打印&sce得到的才是结构体自己的地址,也就是切片的地址(*[]int)
var sce []int = []int{1, 3, 5}
var p *[]int = &sce
//操作切片的数据
(*p)[0] = 666

指向字典的指针

  • 和普通指针一样, 只能通过(*p)[key]来操作字典
var dict map[string]string = map[string]string{"name":"lnj","age":"18"}
var p *map[string]string = &dict
(*p)["name"] = "zs"
fmt.Println(dict)//{"name":"zs","age":"18"}

指向结构体的指针

  • 指向结构体的指针和C语言指向结构体的指针类似,可以通过p.name或者(*p).name来操作指针
    type Person struct {
        name string
        age int
    }
    var per Person = Person{"lnj", 18}
    var p *Person
    p = &per
    //(*p).name = "zs"
    p.name = "zs"
    fmt.Println(per)

指针作为返回值

  • 指针作为函数的参数和C语言一样, 修改形参会影响实参
  • 指针作为函数的返回值, 如果指针指向的是一个局部变量, 那么不建议返回.因为当函数调用完毕局部变量就释放了

相关文章

  • go语言值传递与指针传递

    go语言指针 go语言作为静态编译型语言,具有指针类型,但是不提供对指针的移位危险操作,防止指针的越界等问题。 g...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • Go语言 指针

    指针 概念 Go语言的指针和C语言一样也是用来保存地址的变量 格式 普通指针 指向数组的指针 注意点 GO语言中只...

  • go语言指针类型的使用

    go语言的指针类型 简单地说go语言的指针类型和C/C++的指针类型用法是一样的,除了出去安全性的考虑,go语言增...

  • Golang:关于寻址的一些问题

    Go 语言有点像 C 语言,它有指针,用 * 标识一个指针,用 & 标识一个地址,但 Go 语言的指针比较简单,没...

  • go 语言指针

    go 语言指针 go 语言的参数传递全部都是 值传递 用一个交换的例子学习指针

  • Golang 指针

    指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。Go语言当中的指针涉及到三个点:指...

  • Go语言入门总结(六)-指针

    指针 1.&和* 在go语言中,也有指针的概念,不同于java。是没有指针的概念的。但是go语言的指针也并没有c中...

  • 13-Go语言指针和方法

    指针 普通数据类型指针 Go语言中的普通指针和C语言中的普通指针一样, 通过指针也可以间接操作指向的存储空间 Go...

  • Go语言基础之指针

    区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个...

网友评论

      本文标题:Go语言指针

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