以下代码的Holder指定为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
}
答案 0 :(得分:1)
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
}