douxuanma4357 2016-08-13 06:20
浏览 35
已采纳

Golang方法参数接口{}

code:

type String struct {
    Result string
}

func main() {
    result := &String{Result:"value"}
    //var test string= "value"
    //result := &test

    testDataBase(result)
    fmt.Print(result.Result) //expect:"34",but:"value"
}

func testDataBase(str interface{}) {
    strV,ok := str.(String)
    if ok {
        strV.Result="34"
    }
}

so,how can I get the result :34 ?

  • 写回答

1条回答 默认 最新

  • dongqiancui9194 2016-08-13 06:29
    关注

    Use strV, ok := str.(*String),
    Like this working sample code:

    package main
    
    import "fmt"
    
    type String struct{ Result string }
    
    func main() {
        result := &String{Result: "value"}    
        testDataBase(result)
        fmt.Println(result.Result)
    }
    
    func testDataBase(str interface{}) {
        strV, ok := str.(*String)
        if !ok {
            panic("error")
        }
        strV.Result = "34"
    }
    

    output:

    34
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 ue5运行的通道视频都会有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数