登录
首页 >  Golang >  Go问答

将Golang中的枚举类型转换为指针类型

来源:stackoverflow

时间:2024-03-22 09:21:42 295浏览 收藏

在 Golang 中,将枚举类型转换为指针类型时,需要解决指针赋值问题。文章介绍了一种方法,即为指针变量分配空间,以避免运行时异常。通过使用 `new` 关键字为指针变量分配空间,可以将枚举值转换为指针类型。

问题内容

这里是新手, 我想将枚举从 day 类型转换为 *mappings 类型,因为它们是字符串,所以我无法直接将指针值分配给枚举。 我尝试将值分配给临时变量

var id = mon
*r = id

但这不起作用,我希望将其分配给一个指针,以便该类型可以具有 nil 值。我无法更改 day 结构或 mappings 结构类型。 如何将值分配给接收器 *r 而不会遇到指针问题? 演示链接:https://play.golang.org/p/5snx0i-prc2

package main

type Day string

const (
    SUNDAY  Day = ""
    MONDAY  Day = "MONDAY"
    TUESDAY Day = "TUESDAY"
)

type Mappings string

const (
    SUN Mappings = ""
    MON Mappings = "MON"
    TUE Mappings = "TUE"
)

func main() {

    type A struct {
        day Day
    }

    type B struct {
        day *Mappings
    }

    sourceObj := A{day: MONDAY}

    destObj := B{}

    destObj.day.To(sourceObj.day)

}

func (r *Mappings) To(m Day) {
    switch m {
    case MONDAY:
        *r = MON
    case TUESDAY:
        *r = TUE
    }
}

正确答案


destobj.day 将是 nil。因此,*r*destobj.day 将是运行时异常。 使用 new 关键字为 destobj.day 分配空间。 示例:

destObj := B{new(Mappings)}

好了,本文到此结束,带大家了解了《将Golang中的枚举类型转换为指针类型》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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