初始化自定义类型

Initializing custom type

谁能帮我理解一下下面的情况?

有自定义类型

type Foo string

这个施工工程:

var foo Foo = "foo"
fmt.Printf("\n%s", foo)

还有这个:

var bar = "bar"
var foo Foo = bar
fmt.Printf("\n%s", foo)

抛出一个 cannot use bar (variable of type string) as type Foo in variable declaration. 有什么区别以及如何正确初始化此类型? 谢谢

最后一个不行,因为 Go 有强类型检查;此外,如果 Foo 具有 string 作为基本类型,则它不是 string.

因此,您不能为其分配字符串。

要实现你想要的,你必须进行转换

func main() {
    var a = "hello"
    var b Foo
    b = Foo(a)
    fmt.Println("b:", b)
}

让我更正一下

var bar = "bar"
var foo Foo = Foo(bar)
fmt.Printf("\n%s", foo)

或者只是

var foo = Foo(bar)