douaoli5328 2017-03-09 22:21
浏览 10
已采纳

通过参考持有人对象传递价值

Following code has Holder specified as of interface type.

What changes can be done to the Holder object so it receives any kind with reference type, so if any changes to the value object, it gets reflected on the main.

type Holder struct {
    Body interface{}
}

type Value struct {
    Input int
    Result int
}

func main() {
    value := Value{Input: 5}
    holder := Holder{Body: value}

    fmt.Println(value) // {5 0}
    modify(holder)
    fmt.Println(value) // {5 0} should display {5 10}
}

func modify(holder Holder) {
    var value Value = holder.Body.(Value)
    value.Result = 2 * value.Input
}

Go Playground

  • 写回答

1条回答 默认 最新

  • dongxi5494 2017-03-09 22:23
    关注
    package main
    
    import "fmt"
    
    type Holder struct {
        Body interface{}
    }
    
    type Value struct {
        Input  int
        Result int
    }
    
    func main() {
        value := Value{Input: 5}
        holder := Holder{Body: &value}
    
        fmt.Println(value) // {5 0}
        modify(&holder)
        fmt.Println(value) // {5 0} should display {5 10}
    }
    
    func modify(holder *Holder) {
        var value *Value = holder.Body.(*Value)
        value.Result = 2 * value.Input
    }
    

    https://play.golang.org/p/hG8cH4UBPc

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

报告相同问题?

悬赏问题

  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化