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

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

概念

在Go语言中,指针是一个存储了变量内存地址的特殊类型。指针变量指向内存地址,而不是直接指向变量的值。

使用 & 符号来获取变量的地址,使用 * 符号来声明指针变量和访问指针指向的值

代码

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

理解

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

go 复制代码
var a int = 42
var ptr *int
ptr = &a

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

go 复制代码
var ptr *int

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

go 复制代码
var a int = 42
var ptr *int
ptr = &a
fmt.Println(*ptr) // 输出为 42

Tips小知识点

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

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

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

相关推荐
我是唐青枫1 分钟前
C#.NET YARP 认证授权实战:在网关层统一接入 JWT
开发语言·c#·.net
故事和你913 分钟前
洛谷-【数据结构2-2】线段树2
开发语言·数据结构·算法·动态规划·图论
故事和你918 分钟前
洛谷-【数据结构2-2】线段树1
开发语言·javascript·数据结构·算法·动态规划·图论
鸠摩智首席音效师8 分钟前
如何在 Bash 中通过 Amazon SES 发送电子邮件 ?
开发语言·bash
~|Bernard|15 分钟前
五,go语言的内存管理
开发语言·后端·golang
Cx330❀20 分钟前
从零实现一个 C++ 轻量级日志系统:原理与实践
大数据·linux·运维·服务器·开发语言·c++·搜索引擎
AI玫瑰助手22 分钟前
Python流程控制:while循环嵌套与死循环避免技巧
开发语言·python·信息可视化
AI人工智能+电脑小能手33 分钟前
【大白话说Java面试题 第47题】【JVM篇】第7题:Young GC 和 Full GC 分别采用什么算法?
java·jvm·后端·算法·面试
之歆37 分钟前
DAY_23 JavaScript 函数进阶:作用域 · 提升 · 匿名函数 · IIFE · 回调 · 递归 · Object 对象建模(下)
开发语言·javascript·ecmascript
csbysj202038 分钟前
jEasyUI 合并单元格
开发语言