golang中 &和*的区别
-
&
用于获取地址
-
*
用于声明时,就是声明指针类型,
用于解引用时,就是解引用指针。
&
是取地址操作符,用于获取变量的内存地址。例如:
| package main |
| |
| import "fmt" |
| |
| func main() { |
| var num int = 10 |
| |
| p := &num |
| fmt.Printf("num 的地址是:%p\n", p) |
| } |
-
*
有两种主要用途:
- 当用于声明变量时,如
*Student
,表示定义一个指向 Student
结构体的指针类型。例如:
| package main |
| |
| import "fmt" |
| |
| type Student struct { |
| name string |
| age int |
| } |
| |
| func main() { |
| |
| s := Student{name: "Alice", age: 20} |
| |
| var ps *Student = &s |
| fmt.Printf("ps 指向的 Student 实例的 name 字段值为:%s\n", ps.name) |
| } |
- 当用于指针解引用时,
*
可以获取指针所指向的值。例如:
| package main |
| |
| import "fmt" |
| |
| func main() { |
| var num int = 10 |
| p := &num |
| |
| *p = 20 |
| fmt.Println(num) |
| } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
2023-01-12 fastapi_socketio