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

【go从零单排】go语言中的指针

挪威特罗姆瑟夜景

Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

概念

在Go语言中,指针是一个存储了变量内存地址的特殊类型。指针变量指向内存地址,而不是直接指向变量的值。
使用 & 符号来获取变量的地址,使用 * 符号来声明指针变量和访问指针指向的值

代码

package main

import "fmt"

// zeroval函数,输入一个int类型,在内部赋值ival=0
func zeroval(ival int) {
	ival = 0
}

// zeroptr函数,输入一个int指针类型,内部通过*指针把指针指向的变量的值赋值为0
func zeroptr(iptr *int) {
	*iptr = 0
}

func main() {
	i := 1
	fmt.Println("initial:", i)
	//调用zeroval函数
	zeroval(i)
	fmt.Println("zeroval:", i)
	//传递i的内存地址&i
	zeroptr(&i)
	fmt.Println("zeroptr:", i)
	//打印指针的内存地址 &i
	fmt.Println("pointer:", &i)
}

输出:

go run post.go
initial: 1
zeroval: 1
zeroptr: 0
pointer: 0xc000090020

理解

获取变量地址:& 操作符用于获取变量的地址。

var a int = 42
var ptr *int
ptr = &a

声明指针变量: 符号用于声明指针变量。

var ptr *int

访问指针指向的值: 符号用于访问指针指向的值。

var a int = 42
var ptr *int
ptr = &a
fmt.Println(*ptr) // 输出为 42

Tips小知识点

指针在Go语言中常用范围:

  • 传递函数参数:通过指针可以在函数间传递大量数据,避免复制数据的开销。
  • 动态分配内存:使用指针可以动态分配内存,创建灵活的数据结构
  • 与数据结构一起使用:指针在数据结构中经常用于引用其他对象。
  • 使用指针时需要注意避免空指针引用,先做判断

掌握知识的最好方式就是教会别人,每篇文章都讲清楚一个知识点,欢迎留言我一起讨论。


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

相关文章:

  • 优先队列(基于无序数组,有序数组,堆)
  • RabbitMQ客户端应用开发实战
  • 如何创建备份设备以简化 SQL Server 备份过程?
  • k8s 上如何跑 Dolphins 模型
  • Vue2 doc、excel、pdf、ppt、txt、图片以及视频等在线预览
  • Android CCodec Codec2 (二十)C2Buffer与Codec2Buffer
  • NVR小程序接入平台/设备EasyNVR多品牌NVR管理工具/设备汇聚公共资源场景方案全析
  • 如何设置 TORCH_CUDA_ARCH_LIST 环境变量以优化 PyTorch 性能
  • AutoOps 使每个 Elasticsearch 部署都更易于管理
  • C#核心(7)索引器
  • 从0开始linux(21)——文件(2)文件重定向
  • Hive 查询各类型专利 Top 10 申请人及对应的专利申请数
  • 记录offcanvas不能显示和关闭的修复方法
  • QT监控文件夹变化(文件增加、删除、改名)
  • B2C分销管理系统(源码+文档+部署+讲解)
  • C++20 STL CookBook 4:使用range在容器中创建view
  • c# 动态lambda实现二级过滤(多种参数类型)
  • 『VUE』21. 组件注册(详细图文注释)
  • Kubernetes时代的APM部署革新:基于Webhook的Agent动态注入
  • docker镜像文件导出导入
  • GPU服务器厂家:AI 赋能科学研究的创新突破
  • 1.每日SQL----2024/11/7
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30
  • 为什么人工智能增强的威胁和法律不确定性成为风险主管最关心的问题
  • 5G智能对讲终端|北斗有源终端|北斗手持机|单兵|单北斗
  • Java | Leetcode Java题解之第543题二叉树的直径