我需要通过引用传递结构类型的接口,如下所示。由于我不能使用接口指针来构造类型变量,我应该如何更改以下代码来修改te
价值10
?.
package main
import (
"fmt"
)
func another(te *interface{}) {
*te = check{Val: 10}
}
func some(te *interface{}) {
*te = check{Val: 20}
another(te)
}
type check struct {
Val int
}
func main() {
a := check{Val: 100}
p := &a
fmt.Println(*p)
some(p)
fmt.Println(*p)
}
Thanks!
P.S 我读过,将指针传递给接口并不是一个很好的做法。请让我知道什么是更好的处理方法
那么您正在使用一个接口,并且您需要某种保证可以设置结构成员的值?听起来您应该将保证作为界面的一部分,例如:
type Settable interface {
SetVal(val int)
}
func (c *check) SetVal(val int) {
c.Val = val
}
func some(te Settable) {
te.SetVal(20)
}
type check struct {
Val int
}
func main() {
a := check{Val: 100}
p := &a
some(p)
fmt.Println(*p)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)