我很难将字符串分配给类型字符串。所以我有这种类型:
type Username string
然后我有一个返回字符串的函数
我想做的是将用户名设置为返回的字符串:
u := &Username{returnedString}
我也试过
var u Username
u = returnedString
但我总是得到一个错误。
最佳答案
正如其他人所指出的,您需要进行显式类型转换:
someString := funcThatReturnsString()
u := Username(someString)
我建议阅读 this article关于隐式类型转换。具体来说,Honnef 在 assignability 上引用了 Go 的规范。 :
A value x is assignable to a variable of type T ("x is assignable to T") in any of these cases:
- x's type V and T have identical underlying types and at least one of V or T is not a named type.
因此在您的示例中,returnedString
已经是一个“命名类型”:它的类型为 string。
如果您改为执行类似的操作
var u Username
u = "some string"
你会没事的,因为 "some string"
会被隐式转换为类型 Username
以及 string
和 用户名
的底层类型为string
。
关于go - 分配一个字符串类型的golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35230857/