Day12-指标Pointer

前言

前面有说到,Go 语言承袭了许多 C 语言的传统,在指摽上也不例外,指标对 C 语言来说是学习必经的门槛,只是在 Go 语言里的指标,运用比较简单,没有指标的运算,也不需要手动控制记忆体释放。

建立指标

指标本身存的值是指向在另一个记忆体位置,我们通常不会直接使用指标里的值,而是透过指标指向的记忆体位置,间接操作记忆体位置里的值,我们下面示范建立一个指标:

package main
import (
   "fmt"
)
func main() {
   n := 2
   // 将变数存入地址
   nPtr := &n
   // 印出储存变数的地址
   fmt.Println(nPtr)
}

可以自己试试看执行程序码,印出来的会是一组以十六组进位表示的记忆体位址,透过 & 取出 n 的记忆体位址。那要取 n 值,该怎麽做呢?必须使用 * 符号来取记忆体位址种的值:

package main
import (
   "fmt"
)
func main() {
   n := 2
   // 将变数存入地址
   nPtr := &n
   // 印出记忆体位址中的变数
   fmt.Println(*nPtr)
}

动态配置记忆体

Go 语言也可以动态配置记忆体位至,看一下以下的例子:

package main
import (
   "fmt"
)
func main() {
   // 分配记忆体
   nPtr := new(int)
   // 赋於记忆体一个值
   *nPtr = 2
   // 印出记忆体位址
   fmt.Println(nPtr)
}

new 这个方式是先分配记忆体,类似一种初始化,再将值写入,动态配置适合用於操作大量且不固定的记忆体空间,与make相比,make 回传的不是指标,而是该值别本身。

结语

今天简单说明了指标的概念,以及 Go 语言的指标用法。在 Go 里面,当变数比较大时,传递指标较传递整个变数有效率得多。 Go 语言里的指标,,没有指标的运算,也不需要手动控制记忆体释放,所以相较 C 语言,简化许多。谢谢今天的阅读!

参考来源

https://opensourcedoc.com/golang-programming/pointer/


<<:  予焦啦!在 ethanol 中启用虚拟记忆体

>>:  陆剧线上看

【左京淳的JAVA WEB学习笔记】第九章 电商网站-基础配置

本章开始研究实际案例 由於省略掉了一些细节,无法进行实际测试。 不过经由范例程序码的演示,可以清楚了...

30天零负担轻松学会制作APP介面及设计【DAY 26】

大家好,我是YIYI,今天我要来检讨一下目前的问题~ 问题 第一个部分是页面,我认为可以再增加一些页...

Day13. class_eval & instance_eval - 解答什麽是 MetaClass & Singleton

接下来介绍的章节,会使用到instance_eval, class_eval,加上我们已经在 Day...

[Day22] 网格交易机器人-报价接收

首先先在StockPrice以外,新增Bid和Ask,还有Lock(多线程读写资料避免打架的工具) ...

铁人赛Day28-第八章:恐龙在草地上奔跑吧!

昨天将恐龙转场的部分完成後,我们来将他做个收尾。 1.开启昨天的档案 2.为了後续需要延长秒数 3....