的價值我想這樣的替換界面的價值:更換接口
package main
import "fmt"
type Fooer interface {Foo(string)}
type Foo struct {foo string}
func (f *Foo) Foo(bar string) {f.foo = bar}
var z = &Foo{foo : "new"}
func swap(fooer Fooer) {fooer = z}
func main() {
f := &Foo{foo: "old"}
fmt.Printf("%s (want &{old})\n", f)
swap(f)
fmt.Printf("%s (want &{new})", f)
}
,但我得到:
&{old}
&{old}
我與不同的呼叫試圖左右(fooer *= z
,*fooer = *z
,..)但我似乎無法做到。
您可以在play.golang嘗試這個例子:http://play.golang.org/p/EZEh3X8yHC
好吧,我覺得它的工作原理是這樣的:
func swap(fooer Fooer) {
foo, _ := fooer.(*Foo)
*foo = *z
}
你的編輯可能更像你想要的,但是接口沒有意義,因爲你只能指定完全相同的類型。 – JimB
yup絕對正確:D – machete
[在Golang中將接口設置爲零]可能的副本(http://stackoverflow.com/questions/33841630/set-an-interface-to-nil-in-golang) – icza