首页 文章

如何在golang中通过引用传递struct类型的接口?

提问于
浏览
0

我需要通过引用传递struct类型的接口,如下所示 . 既然,我不能使用接口指针来构造结构类型变量,我应该如何更改下面的代码来将 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)
}

谢谢!

P.S我已经读过,传递指向接口的指针不是一个很好的做法 . 请告诉我什么是更好的方法来处理它

1 回答

  • 5

    所以你正在使用一个接口,你需要某种保证,你可以设置结构的成员的值?听起来你应该保证接口的一部分,所以像这样:

    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)
    }
    

相关问题