package main
import "fmt"
func main() {
i := 32
j := 32
fmt.Printf("%p is %p\n", &i, &i)
fmt.Printf("%p is not %p\n", &i, &j)
}
Run Code Online (Sandbox Code Playgroud)
输出:
0xc000016100 is 0xc000016100
0xc000016100 is not 0xc000016108
Run Code Online (Sandbox Code Playgroud)
游乐场:https : //play.golang.org/p/nXAEJeImeXa
然而,
package main
import "fmt"
func main() {
i := 32
j := 32
fmt.Printf("i %p is i %p; i == i %t\n", &i, &i, &i == &i)
fmt.Printf("i %p is not j %p; i == j %t\n", &i, &j, &i == &j)
fmt.Println()
var v struct {
i struct{}
j struct{}
}
fmt.Printf("i %p is i %p; i == i %t\n", &v.i, &v.i, &v.i == &v.i)
fmt.Printf("i %p is not j %p; i == j %t\n", &v.i, &v.j, &v.i == &v.j)
}
Run Code Online (Sandbox Code Playgroud)
输出:
i 0x40e020 is i 0x40e020; i == i true
i 0x40e020 is not j 0x40e024; i == j false
i 0x1e52bc is i 0x1e52bc; i == i true
i 0x1e52bc is not j 0x1e52bc; i == j true
Run Code Online (Sandbox Code Playgroud)
游乐场:https : //play.golang.org/p/Wv814ZgPCul
Run Code Online (Sandbox Code Playgroud)import "github.com/google/go-cmp/cmp"包 cmp 确定值的相等性。
该包旨在成为reflect.DeepEqual 的更强大和更安全的替代方案,用于比较两个值在语义上是否相等。
| 归档时间: |
|
| 查看次数: |
445 次 |
| 最近记录: |