• Go笔记-指针


    Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址
    一个指针变量可以指向任何一个值的内存地址 它指向那个值的内存地址,在 32 位机器上占用 4 个字节,在 64 位机器上占用 8 个字节,并且与它所指向的值的大小无关。当然,可以声明指针指向任何类型的值来表明它的原始性或结构性;你可以在指针类型前面加上 * 号(前缀)来获取指针所指向的内容,这里的 * 号是一个类型更改器。使用一个指针引用一个值被称为间接引用。
    当一个指针被定义后没有分配到任何变量时,它的值为 nil。
     
    对于任何一个变量 var, 如下表达式都是正确的:var == *(&var)
     
    注意:
        不能得到一个文字或常量的地址,例如:
            const i = 5
            ptr := &i  // 错误
            ptr2 := $10 // 错误
        指针运算在Go中不合法
            c = *p++
        对空指针的反向引用是非法的,例如:
            var ptr *int
            a := *ptr
     
    适度使用指针的优点:
        指针的一个高级应用是你可以传递一个变量的引用(如函数的参数),这样不会传递变量的拷贝。指针传递是很廉价的,只占用 4 个或 8 个字节。当程序在工作中需要占用大量的内存,或很多变量,或者两者都有,使用指针会减少内存占用和提高效率。被指                    向的变量也保存在内存中,直到没有任何指针指向它们,所以从它们被创建开始就具有相互独立的生命周期。
     
     
    过度使用指针的缺陷:
        另一方面(虽然不太可能),由于一个指针导致的间接引用(一个进程执行了另一个地址),指针的过度频繁使用也会导致性能下降。
        指针也可以指向另一个指针,并且可以进行任意深度的嵌套,导致你可以有多级的间接引用,但在大多数情况这会使你的代码结构不清晰。
     
    学习参考处:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md
  • 相关阅读:
    git
    oracle object_id和data_object_id的区别
    statspack系列8
    statspack系列7
    statspack系列6
    statspack系列5
    statspack系列4
    statspack系列3
    statspack系列2
    MySQL源码之两阶段提交
  • 原文地址:https://www.cnblogs.com/ymkfnuiwgij/p/7863007.html
Copyright © 2020-2023  润新知