dtz46697 2019-03-06 11:51
浏览 46
已采纳

方法如何获取接口类型的输出参数? [重复]

This question already has an answer here:

Given:

type Savable interface {}
type Customer struct {} // satisfies 'Savable'

func GetSaved(id string, s Savable) {
  // somehow get a reference to the object from cache
  s = cachedObject 
  // alternately, something like:
  // json.Unmarshal(jsonFromDisk, &s)
}

func Foo() {
  c := Customer{}
  GetSaved("bob", &c)
}

Trying a few configurations, I either get compilation errors related to "Expects *Savable, found *Customer", or the GetSaved function doesn't actually change what I want to be the 'output variable'. Is this doable, and I'm just not getting the right mix of interface/pointers/etc? Or is this not possible for some reason?

Edit: A working example illustrating the problem.

</div>
  • 写回答

2条回答 默认 最新

  • douci4026 2019-03-06 12:33
    关注

    This works I converted it to bytes and Unmarshaled it back into your structure. Hope this helps. :) package main

    import (
        "encoding/json"
        "fmt"
    )
    
    type Savable interface{}
    type Customer struct {
        Name string
    } // satisfies 'Savable'
    
    func GetSaved(id string, s Savable) {
        // somehow get a reference to the object from cache
        cached := Customer{Name: "Bob"}
        byt, _ := json.Marshal(cached)
    
        _ = json.Unmarshal(byt, &s)
    
    }
    
    func main() {
        c := Customer{}
        GetSaved("bob", &c)
        fmt.Println(c)
    }
    

    Run link: https://play.golang.org/p/NrBRcRmXRVZ

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题