将字符串转换为Foo(类型字符串)

时间:2014-11-20 17:25:09

标签: string go

这个例子有点遗漏了我正在做的自定义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的字符串表示(有效,在许多解码器中使用它)转换为字符串的自定义类型时缺少什么?

1 个答案:

答案 0 :(得分:4)

直接将c转换为Foo

f = Foo(c)

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

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