go - 更改类型后获取地址
问题描述
我是 Go 新手,我试图从开发人员的角度找到一种方便的方法,以便在更改类型后获取对象的地址。
考虑这两种新类型:
type specialString string
type nestedStruct struct {
name *specialString
}
我发现填充 nestedStruct 的规范方法是:
str := "James"
specStr := specialString(str)
nested := nestedStruct{
name: &specStr,
}
有没有办法省略 的声明specStr
,然后只在一个地方使用?我试过这个,但它触发了一个语法错误(这是什么逻辑原因?):
//Syntax error
nested := nestedStruct{
name: &specialString(str),
}
任何帮助,将不胜感激。
解决方案
您不能获取任意操作的地址,包括类型转换。有关详细信息,请参阅如何在 Go 中存储对操作结果的引用?; 并在 go 中找到常量的地址。
如果转换字符串文字,则可以省略局部变量之一:
specStr := specialString("James")
nested := nestedStruct{
name: &specStr,
}
如果您已经有一个string
类型的变量并且您想省略第二个变量(specialString
类型),那么获取现有string
变量的地址,并将其转换为*specialString
:
str := "James"
nested = nestedStruct{
name: (*specialString)(&str),
}
在Go Playground上尝试这些示例。
如果您想省略局部变量,请参阅以下选项的答案:How do I do a literal *int64 in Go?
推荐阅读
- ios - 无法检测到ios 13+以上的设备平台
- css - 如何在 Nuxtjs 中为每个布局包含本地(非全局)样式表文件
- jhipster - JHipster 网关应用程序登录失败
- javascript - Google Apps 脚本:类表示法和新对象
- python - 如何从python中的字典中获取值?
- reactjs - 如何在同一个根域下创建 2 个 PWA
- javascript - 编写一个 JavaScript 控制台程序来读取输入文件并将句子转换为首字母缩写词
- javascript - 如何在 CKEditor 4 中设置默认字体
- c++ - 使用动态编程的具有分区约束的 Max Sum 子数组
- javascript - 如何从阴影根元素中获取文本?