登录
首页 >  Golang >  Go问答

避免空结构使用相同的地址

来源:stackoverflow

时间:2024-04-08 19:00:37 482浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《避免空结构使用相同的地址》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

为了在 go 中拥有更有用的枚举,我尝试使用结构指针作为枚举值。如果结构有字段,这非常有用,但对于空结构,无论我使用 &foo{} 还是 new(foo),我有时都会多次获得相同的指针。

有什么方法可以强制指针不同吗?

这就是我正在尝试做的(在线尝试):

package main

type Foo struct{}

var FooValues = struct {
    Alpha   *Foo
    Bravo   *Foo
    Charlie *Foo
}{
    Alpha:   &Foo{}, // These pointers should all be different
    Bravo:   &Foo{}, // But sometimes
    Charlie: &Foo{}, // They are not
}

func main() {
    if FooValues.Alpha == FooValues.Charlie {
        panic("enum values are the same!")
    }
}

正确答案


没有。任何实现都允许使用相同的地址。您必须重新设计。

来自Go语言specification

好了,本文到此结束,带大家了解了《避免空结构使用相同的地址》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>