2014-11-20 64 views
1

这个例子将是一点点裸露去掉,我做的自定义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 

美孚是字符串类型,我缺少将xml.CharData的字符串表示形式(这是有效的,在许多解码器中使用它)转换为字符串的自定义类型?

回答

4

直接将c转换为Foo

f = Foo(c) 

游乐场:http://play.golang.org/p/WR7gCHm9El

编辑:这工作,因为Foo是一个字符串下方。 Foo是一个新的和独特的派生类型;其基本类型是string。您可以类似地为任何现有类型创建派生类型。每种派生类型都是不同的,因此您可以获得类型安全。转化必须明确。