go中将enum类型转换为*enum类型

Jit*_*ath -3 enums go

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

var id = MON
*r = id
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我希望将其分配给一个指针,以便该类型可以具有 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
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 6

destObj.daynil。因此,*rand*destObj.day将成为运行时异常。destObj.day使用关键字分配空间new。例子:

destObj := B{new(Mappings)}
Run Code Online (Sandbox Code Playgroud)