go - 分配一个字符串类型的golang

标签 go types

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

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/

相关文章:

go - 如何使用 Go 检索本地计算机 Windows 证书存储列表?

当我执行这个 go 代码时,html 代码显示没有 css,但是当我直接在浏览器中打开它时,它显示 html 和 css 都很好

python - 如何实现装饰器来强制 Python 类型提示?

Haskell - 预期类型与实际类型

function - 在函数中声明函数类型

go - 如何注册 systemd 服务生命周期事件?

go - 展平参数列表,其中参数可能是 slice 或数组

amazon-web-services - 如何模拟 s3Client 以便我可以在 Golang 测试中运行 GetObject()?

typescript :带接口(interface)的映射类型

python - 比较python中两个动态创建的类类型