【发布时间】:2018-04-09 19:05:24
【问题描述】:
我一直在并行阅读 Rust 和 Go,我发现这两种语言在处理悬空指针的方式及其导致的问题方面存在细微差别。例如,这里是 Rust 的一个版本:
fn main() {
let reference_to_nothing = dangle();
}
fn dangle() -> &String {
let s = String::from("hello");
&s
}
上面会出错,在函数dangle 中,s 超出范围,我无法返回对它的引用!但是在 Go 中,这似乎是允许的?
Go 中如何处理这样的事情?在 Go 中创建悬空指针容易吗?如果是这样,我必须采取什么措施来控制它们?
【问题讨论】:
标签: pointers go dangling-pointer