gpt4 book ai didi

go - 更改类型后获取地址

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:20 26 4
gpt4 key购买 nike

我是 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),
}

如有任何帮助,我们将不胜感激。

最佳答案

您不能获取任意操作的地址,包括类型转换。有关详细信息,请参阅 How can I store reference to the result of an operation in Go? ;和 Find address of constant in 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?

关于go - 更改类型后获取地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55691220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com