这个例子有点遗漏了我正在做的自定义xml解析,但是我遇到了这个问题:
package main
import (
"encoding/xml"
"fmt"
)
type Foo string
func main() {
var f Foo
var b string
c := xml.CharData{}
f = string(c)
b = string(c)
fmt.Println(b)
}
//prog.go:15: cannot use string(c) (type string) as type Foo in assignment
Foo是一种字符串,我将xml.CharData的字符串表示(有效,在许多解码器中使用它)转换为字符串的自定义类型时缺少什么?
答案 0 :(得分:4)
直接将c
转换为Foo
。
f = Foo(c)
游乐场:http://play.golang.org/p/WR7gCHm9El
编辑:这是有效的,因为Foo
是一个字符串。 Foo
是一种新的独特派生类型;其基本类型为string
。您可以类似地为任何现有类型创建派生类型。每个派生类型都是不同的,因此您可以获得类型安全。转换必须明确。