如何解决*布尔值与* interface {}不兼容
我有这样的类型
type Transformer func(raw string) (*interface{},error)
var TransformBoolean Transformer = func(raw string) (*interface{},error) {
var value bool
if raw == "true" {
value = true
} else if raw == "false" {
value = false
} else {
return nil,Error{"Invalid"}
}
return &value,nil // <-- Here's the error
}
函数返回类型为interface {},因为它可以返回int,boolean,float等。 但是,编译器不允许我将* boolean作为* interface {}
返回解决方法
value
是布尔值,因此&value
是指向布尔值的指针(不是指向interface{}
的指针)。如果要返回指向接口的指针,则可以使用:
x := interface{}(value)
return &x,nil
请参见Playground。
但是,在很多情况下,采用接口地址是有用的(请参阅对此question的回答),因此可能值得考虑是否有必要。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。