在go中将枚举类型转换为*枚举类型

Converting enum type to *enum type in go

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

var id = MON
*r = id

但这没有用,我希望将它分配给一个指针,这样我就可以为该类型设置 nil 值。我无法更改 Day 结构或 Mappings 结构类型。 如何在没有 运行 的情况下将值分配给接收器 *r 到指针问题? 游乐场 link: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 分配 space。 示例:

destObj := B{new(Mappings)}