ssa: index check take address
This commit is contained in:
@@ -1,8 +1,13 @@
|
||||
package main
|
||||
|
||||
type N [1]int
|
||||
|
||||
func main() {
|
||||
make1()
|
||||
make2()
|
||||
make3()
|
||||
make4()
|
||||
}
|
||||
|
||||
func make1() {
|
||||
m := make(map[int]string)
|
||||
m[1] = "hello"
|
||||
m[2] = "world"
|
||||
@@ -30,18 +35,55 @@ func main() {
|
||||
if len(s) != 2 {
|
||||
panic("bad len")
|
||||
}
|
||||
}
|
||||
|
||||
type N1 [1]int
|
||||
|
||||
func make2() {
|
||||
m2 := make(map[int]string)
|
||||
println(m2, len(m2), m2 == nil, m2 != nil)
|
||||
var m3 map[int]string
|
||||
println(m3, len(m3), m3 == nil, m3 != nil)
|
||||
|
||||
n := make(map[any]int)
|
||||
n[N{1}] = 100
|
||||
n[N{2}] = 200
|
||||
n[N{3}] = 300
|
||||
n[N{2}] = -200
|
||||
n[N1{1}] = 100
|
||||
n[N1{2}] = 200
|
||||
n[N1{3}] = 300
|
||||
n[N1{2}] = -200
|
||||
for k, v := range n {
|
||||
println(k.(N)[0], v)
|
||||
println(k.(N1)[0], v)
|
||||
}
|
||||
}
|
||||
|
||||
type N struct {
|
||||
n1 int8
|
||||
n2 int8
|
||||
}
|
||||
type K [1]N
|
||||
type K2 [1]*N
|
||||
|
||||
func make3() {
|
||||
var a any = K{N{1, 2}}
|
||||
var b any = K{N{1, 2}}
|
||||
println(a == b)
|
||||
|
||||
m := make(map[any]int)
|
||||
m[K{N{1, 2}}] = 100
|
||||
m[K{N{3, 4}}] = 200
|
||||
for k, v := range m {
|
||||
println(k.(K)[0].n1, v)
|
||||
}
|
||||
}
|
||||
|
||||
func make4() {
|
||||
var a any = K2{&N{1, 2}}
|
||||
var b any = K2{&N{1, 2}}
|
||||
println(a == b)
|
||||
|
||||
m := make(map[any]int)
|
||||
m[K2{&N{1, 2}}] = 100
|
||||
m[K2{&N{3, 4}}] = 200
|
||||
for k, v := range m {
|
||||
println(k.(K2)[0].n1, v)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user