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

go 语法里变量前面增加、*区别

在 Go 语言中,& 和 * 是与指针相关的两个重要操作符,它们的作用如下:

简单理解:

  • a为变量,&a获取指针地址
  • a为指针,*a获取值

& 操作符

  • 作用:获取变量的内存地址(取地址操作符)
  • 用法:&variable 返回该变量的指针(即指向该变量的地址)
var x int = 10
ptr := &x  // ptr 是一个指向 x 的指针

* 操作符
作为指针声明

  • 作用:声明指针类型
  • 用法:*Type 表示指向 Type 类型的指针
var ptr *int  // 声明一个指向 int 的指针

作为解引用操作符

  • 作用:获取指针指向的值(解引用操作符)
  • 用法:*pointer 返回指针指向的值
var x int = 10
var ptr *int = &x
value := *ptr  // value = 10,获取 ptr 指向的值

示例对比

package mainimport "fmt"func main() {x := 10// & 获取地址ptr := &xfmt.Printf("x 的值: %d\n", x)           // 输出: 10fmt.Printf("x 的地址: %p\n", &x)        // 输出: x 的内存地址fmt.Printf("ptr 的值: %p\n", ptr)       // 输出: x 的内存地址fmt.Printf("ptr 的类型: %T\n", ptr)     // 输出: *int// * 解引用value := *ptrfmt.Printf("通过指针访问的值: %d\n", value)  // 输出: 10fmt.Printf("ptr 指向的值: %d\n", *ptr)      // 输出: 10// 修改指针指向的值*ptr = 20fmt.Printf("修改后 x 的值: %d\n", x)        // 输出: 20
}

 

http://www.hskmm.com/?act=detail&tid=17287

相关文章:

  • 历程回顾-(2024-2025)
  • CF Round 1053(2150 2151) 总结
  • 20250922_QQ_backdoor
  • 实用指南:【Java八股文】13-中间件面试篇
  • AT_agc012_d [AGC012D] Colorful Balls
  • 02、Python从入门到癫狂:函数与资料容器
  • 第二周第四天2.4
  • 9/25
  • 关闭Edge浏览器页面的圆角效果
  • 搜索二维矩阵II-leetcode
  • Rust/C/C++ 混合构建 - Cmake集成Cargo编译动态库
  • 第12章 day13 关于json请求体
  • CF1349
  • 学习敏捷课程PSM,自考证书分享
  • Rust/C/C++ 混合构建 - 用Bazel构建Rust与C
  • 9.24(补)
  • 9月25号
  • CCF CSP-J 2025_from_黄老师_d
  • 亚马逊与AWS如何通过漏洞赏金计划构建深度安全防御
  • sync.pool 面试题
  • 【JavaEE】SpringIoC与SpringDI - 详解
  • 24.Linux硬盘分区管理 - 详解
  • CCF CSP-J 2025_from_黄老师_km
  • AI一周资讯 250918-250925
  • 云栖小镇现场追踪!触摸AI 未来
  • AT_arc154_d [ARC154D] A + B C ?
  • SQL注入-联合注入
  • JVM对象创建与内存分配
  • 目录
  • 交互:在终端中输入用户信息