分享
  1. 首页
  2. 文章

通过例子学习 Go 和 Rust ---- 指针

Tericoder · · 1170 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

指针表示内存上的一段数据的位置、长度、类型信息。在 Go 和 Rust 里面都可以操作指针,咱用一个最简单的例子来看看它们的异同之处。

Go

func zeroval(ival int) {
 ival = 0
}
func zeroptr(iptr *int) {
 *iptr = 0
}
func main() {
 i := 1
 fmt.Println("initial:", i)
 
 zeroval(i)
 fmt.Println("zeroval:", i)
 
 zeroptr(&i)
 fmt.Println("zeroptr:", i)
 
 fmt.Println("pointer:", &i)
}
initial: 1
zeroval: 1
zeroptr: 0
pointer: 0xc000022050

在 go 语言里,参数传入的时候是默认复制一份的,所以不会被修改。除非传入的是指向数据的指针。

Rust

在 Rust 里咱可以实现一样的机制。

fn main() {
 fn zeroval(ival: &i32) {
 let ival = 0;
 }
 
 fn zeroptr(iptr: &mut i32) {
 *iptr = 0;
 }
 
 let mut i = 1;
 println!("initial: {:?}", &i);
 
 zeroval(&i);
 println!("zeroval: {:?}", &i);
 
 zeroptr(&mut i);
 println!("zeroptr: {:?}", &i);
 
 let ptr: *mut i32 = &mut i;
 println!("pointer: {:?}", ptr);
 
}
initial: 1
zeroval: 1
zeroptr: 0
pointer: 0x7ffc2c6e5990

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:Tericoder

查看原文:通过例子学习 Go 和 Rust ---- 指针

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1170 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏