这里是新手,我想将枚举从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.day将nil。因此,*rand*destObj.day将成为运行时异常。destObj.day使用关键字分配空间new。例子:
destObj := B{new(Mappings)}
Run Code Online (Sandbox Code Playgroud)