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