首页 > 解决方案 > 因为在将指针添加到接口数组后,我无法恢复指针的值

问题描述

我正在研究“指针”。我可以使用“&”和“*”运算符正常打印内存位置和变量值。问题是当内存地址位于接口数组内时,我无法打印该值。我可以提取内存位置,但不能提取值。怎么做?


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 {})

标签: arraysgopointers

解决方案


阅读JimB建议的链接后:

fmt.Println("Variable value: ", *array[0].(*string))


推荐阅读