我想重构一些代码,但不能这样做,因为指针给了我各种各样的错误,这取决于我选择如何实现它。以前类似的方法是有效的:
var buf1 []Somestruct1
var buf2 []Somestruct2
var selected_buf //pointer, needs to be declared. I used *int, []interface{}, *[]interface{}, but nothing seems to work so far
changeme := 0
switch changeme {
case 0:
// should point to buf1 to mutate it in future
selected_buf = &buf1
case 1:
// should point to buf2 to mutate it in future
selected_buf = &buf2
}
// examples of use and mutation
len(selected_buf)
selected_buf = append(selected_buf, Somestruct1) // or Somestruct2 depending on pointer
我想重构一些代码,但不能这样做,因为指针给了我各种各样的错误,这取决于我选择如何实现它。以前类似的方法是有效的:
var newstruct Somestruct3
for i := range buf1 {
current := buf1[i]
if current.somefield == someint {
newstruct.somefield = ¤t
}
}
效果很好。我不知道该怎么办。请帮助)
版主们,请仁慈一点——我正在用手机打字,用的是糟糕的网络。thanks"
我看到这两种类型将合并为一种类型,因此可以做的一种工作是引入一个具有可能方法的接口,并将其附加到该接口
type testinterface interface {
}
func main() {
var tmp []Somestruct1
var tmp2 []Somestruct2
var tmp3 []testinterface
tmp3 = append(tmp3, &Somestruct1)
tmp3 = append(tmp3, &Somestruct2)
}