当前位置: 首页 > article >正文

指针基础 - golang版

文章目录

  • 1、指针
  • 2、基础语法
    • 2.1 定义指针
    • 2.2 取地址操作符 `&`
    • 2.3 解引用操作符 `*`
  • 3、实战用法
    • 3.1 指针作为函数参数
    • 3.2 指针和结构体
    • 3.3 指针和接收者

1、指针

  • 变量是存储值的地方;
  • 指针的值是一个变量的地址;
  • 不是所有的值都有地址,但是所有的变量都有;
  • 使用指针,可以在无须知道变量名字的情况下,间接读取或更新变量的值

2、基础语法

2.1 定义指针

  • Go 语言中,使用 * 符号来定义指针类型;
var ptr *int

2.2 取地址操作符 &

  • 使用 & 符号可以获取一个变量的内存地址;
x := 10
ptr := &x // 将 ptr 指向了变量 x 的内存地址

2.3 解引用操作符 *

  • 使用 * 符号可以获取指针指向的变量的值;
y := *ptr // 获取指针 ptr 指向的变量的值

3、实战用法

3.1 指针作为函数参数

  • 可以将指针作为函数的参数,以便在函数内部修改调用者传递的变量;
func ModifyValueTo100(num int) {
	fmt.Printf("输入 num: %v\n", num)
	modifyValue(&num)
	fmt.Printf("修改后 num: %v\n", num)
}

func modifyValue(ptr *int) {
	*ptr = 100
}

3.2 指针和结构体

  • 结构体字段可以是指针类型,这样可以减少复制大型结构体的开销;
  • 同时可以在函数中修改结构体的字段值;
type Person struct {
    Name string
    Age  int
}

func main() {
    p := &Person{Name: "Alice", Age: 25}
    fmt.Println(p.Name)  // 输出 "Alice"
    p.Name = "Bob"       // 修改结构体字段的值
    fmt.Println(p.Name)  // 输出 "Bob"
}

3.3 指针和接收者

  • 在方法定义中,可以使用指针作为接收者,这样可以在方法内部修改接收者的值;
type Counter struct {
    count int
}

func (c *Counter) Increment() {
    c.count++
}

http://www.kler.cn/a/271528.html

相关文章:

  • MATLAB-Simulink并行仿真示例
  • 360嵌入式开发面试题及参考答案
  • RK3568 opencv播放视频
  • 「 机器人 」扑翼飞行器控制策略浅谈
  • Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException
  • 使用冒泡排序模拟实现qsort函数
  • 蓝桥杯刷题|01普及-真题
  • Qt 实现 Asterix 报文解析库
  • 【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理
  • ArcGIS分享图层数据的最佳方法
  • Jupyter Notebook出错提示An error occurred while retrieving package information解决办法
  • 我是继续学习编程,还是学数控?
  • Linux查看mysql安装目录
  • 刷题记录[导航贴]
  • C++算法学习心得八.动态规划算法(4)
  • C#常见的.Net类型(二)
  • c语言:汽车时代
  • go get x509:certificate signed by unknown authority
  • 【Golang星辰图】Go语言游戏开发:选择合适的库加速你的开发过程
  • 【Hadoop大数据技术】——MapReduce经典案例实战(倒排索引、数据去重、TopN)
  • 微信小程序关闭首页广告
  • IO流——转换流
  • 华为鲲鹏ARM处理器920、916系列
  • 【Vue】Request模块 - axios 封装Vuex的持久化存储
  • 【电机芯片】以STM32F103C8T6举例——持续更新
  • XmlHttpRequest responseType: ‘stream‘ 图片代理服务器