Files
llgo/cl/_testrt/makemap/in.go

129 lines
1.7 KiB
Go
Raw Normal View History

2024-06-28 22:01:58 +08:00
package main
func main() {
2024-07-03 13:21:18 +08:00
make1()
make2()
make3()
make4()
2024-07-03 22:16:24 +08:00
make5()
2024-07-25 18:08:25 +08:00
make6()
2024-08-06 22:24:21 +08:00
make7()
2024-07-03 13:21:18 +08:00
}
func make1() {
2024-06-28 22:01:58 +08:00
m := make(map[int]string)
m[1] = "hello"
m[2] = "world"
2024-06-29 20:43:12 +08:00
m[3] = "llgo"
2024-06-29 21:35:20 +08:00
println(m, m[1], m[2], len(m))
2024-06-29 20:43:12 +08:00
for k, v := range m {
println(k, ":", v)
}
2024-06-29 21:35:20 +08:00
2024-06-29 20:43:12 +08:00
s := make(map[string]int, len(m))
for k, v := range m {
s[v] = k
}
2024-06-29 21:35:20 +08:00
2024-06-29 20:43:12 +08:00
id, ok := s["llgo"]
println("llgo", id, ok)
2024-06-29 21:35:20 +08:00
2024-06-29 20:43:12 +08:00
none, ok := s["go"]
println("go", none, ok)
2024-06-29 21:35:20 +08:00
delete(s, "llgo")
if _, ok := s["llgo"]; ok {
panic("bad key")
}
if len(s) != 2 {
panic("bad len")
}
2024-07-03 13:21:18 +08:00
}
type N1 [1]int
2024-06-29 21:35:20 +08:00
2024-07-03 13:21:18 +08:00
func make2() {
2024-06-29 21:35:20 +08:00
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)
2024-07-02 21:14:36 +08:00
n := make(map[any]int)
2024-07-03 13:21:18 +08:00
n[N1{1}] = 100
n[N1{2}] = 200
n[N1{3}] = 300
n[N1{2}] = -200
2024-07-02 21:14:36 +08:00
for k, v := range n {
2024-07-03 13:21:18 +08:00
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)
2024-07-02 21:14:36 +08:00
}
2024-06-28 22:01:58 +08:00
}
2024-07-03 22:16:24 +08:00
func make5() {
ch := make(chan int)
var a any = ch
var b any = ch
println(a == b)
m := make(map[chan int]int)
m[ch] = 100
m[ch] = 200
for k, v := range m {
println(k, v)
}
}
2024-07-25 18:08:25 +08:00
type M map[int]string
func make6() {
var m M
m = make(map[int]string)
m[1] = "hello"
for k, v := range m {
println(k, v)
}
}
2024-08-06 22:24:21 +08:00
func make7() {
type N int
m := map[N]string{
1: "hello",
2: "world",
}
for k, v := range m {
println(k, v)
}
println(m[1])
}