这段代码从同一个指针创建了两个接口变量。打印件表明它们是相同的指针(与存储s和 的副本相反s2)。然而,最后一个打印说明i1与i2. 为什么?
package main
import "fmt"
func main() {
var s T = &struct{string}{}
var s2 *struct{string} = s
var i1 interface{} = s
var i2 interface{} = s2
fmt.Println(s)
s.string = "s is i1"
fmt.Println(i1)
s.string = "s is i2"
fmt.Println(i2)
fmt.Println(i1==i2)
}
type T *struct{string}
$ go run a.go
&{}
&{s is i1}
&{s is i2}
false
慕森卡
相关分类