在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)}
这里是新手,
我想将枚举从 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)}