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

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

var id = MON
*r = id

但这不起作用,我希望将其分配给指针,以便我可以为该类型提供nil值。我无法更改结构或结构类型。如何将值分配给接收器而不遇到指针问题?游乐场链接: https://play.golang.org/p/5SNx0I-Prc2DayMappings*r

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

    }

}


喵喵时光机
浏览 171回答 1
1回答

料青山看我应如是

destObj.day将是 .因此,并且将成为运行时异常。通过使用关键字为 分配空间。例:nil*r*destObj.daydestObj.daynewdestObj := B{new(Mappings)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go