因为在将指针添加到接口数组后,我无法恢复指针的值
Posted
技术标签:
【中文标题】因为在将指针添加到接口数组后,我无法恢复指针的值【英文标题】:Because I can't bring back the value of a pointer after adding it to an array of interfaces 【发布时间】:2021-12-05 19:45:53 【问题描述】:我正在研究“指针”。我可以使用“&”和“*”运算符正常打印内存位置和变量值。问题是当内存地址位于接口数组内时,我无法打印该值。我可以提取内存位置,但不能提取值。如何制作?
package main
import (
"fmt"
)
func main()
var name string = "Name User"
var pointer *string
var array []interface
pointer = &name
array = append(array, &name)
fmt.Println("Memory address: ", pointer) // OK
fmt.Println("Variable value: ", *pointer) // OK
fmt.Println("Memory address: ", array[0]) // OK
fmt.Println("Variable value: ", *array[0]) // ERROR
错误:
invalid indirect of array[0] (type interface )
【问题讨论】:
正如错误所说,您不能取消引用interface
。要获得具体类型,请使用Type Assertion,规范:golang.org/ref/spec#Type_assertions
【参考方案1】:
阅读JimB建议的链接后:
Type Assertion; Documentation。 变化如下:fmt.Println("Variable value: ", *array[0].(*string))
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于因为在将指针添加到接口数组后,我无法恢复指针的值的主要内容,如果未能解决你的问题,请参考以下文章