-1
以下代码拥有指定为interface
类型的持有者。通过引用持有者对象传递值
Holder对象可以做什么修改,因此它可以接收任何类型的引用类型,所以如果对value对象进行任何修改,它会反映到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),溶液变得很明显。 – Volker