gpt4 book ai didi

go - 通过引用 holder 对象传递值

转载 作者:数据小太阳 更新时间:2023-10-29 03:35:20 24 4
gpt4 key购买 nike

以下代码将 Holder 指定为 interface 类型。

可以对 Holder 对象进行哪些更改,以便它接收具有引用类型的任何类型,因此如果对值对象进行任何更改,它会反射(reflect)在 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

最佳答案

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

关于go - 通过引用 holder 对象传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42706630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com