分配一个字符串类型 golang

我很难将字符串分配给类型字符串。所以我有这种类型:

type Username string

然后我有一个返回字符串的函数

我想要做的是将用户名设置为返回的字符串:

u := &Username{returnedString}

我也试过

var u Username
u = returnedString

但我总是得到一个错误。


一只斗牛犬
浏览 161回答 2
2回答

料青山看我应如是

正如其他人指出的那样,您需要进行显式类型转换:someString := funcThatReturnsString()u := Username(someString)我建议阅读这篇关于隐式类型转换的文章。具体来说,Honnef 参考了 Go 对可分配性的规范:在以下任一情况下,值 x 可分配给 T 类型的变量(“x 可分配给 T”):x 的类型 V 和 T 具有相同的基础类型,并且 V 或 T 中至少有一个不是命名类型。所以在你的例子中,returnedString已经是一个“命名类型”:它有类型string.如果你做了类似的事情var u Usernameu = "some string"你就OK了,因为"some string"会被隐式转换成类型Username两者string并Username具有潜在的类型string。

慕姐4208626

您已经创建了一个用户定义的类型“用户名”。您不能在不进行转换的情况下将一种类型的值分配给另一种类型(在本例中为用户名的字符串)。顺便说一句,您可以为它分配一个字符串文字。var u Usernameu = "test"将工作。var u Username    var s string    s = "test"    u = s会给你错误:不能在赋值中使用 s(类型字符串)作为用户名类型您可以从一种类型转换为另一种类型,因此...:var u Username    var s string    s = "test"    u = Username(s)......也会起作用。“u”将是用户名类型,值为“test”。为了记录,这些并不是惯用的例子。我只是想清楚地说明这里的类型发生了什么。
打开App,查看更多内容
随时随地看视频慕课网APP