package main
import (
"fmt"
"maps"
"strconv"
)
func All() {
println("~~~ All start")
defer println("~~~ All end\n")
m := map[int]string{1: "a", 2: "b"}
for key, value := range maps.All(m) {
println(key, ",", value)
}
}
func Clone() {
println("~~~ Clone start")
defer println("~~~ Clone end\n")
value := "a"
m1 := map[int]*string{1: &value}
m2 := maps.Clone(m1)
println(*m1[1], ",", *m2[1])
*m1[1] = "b"
println(*m1[1], ",", *m2[1])
}
func Collect() {
println("~~~ Collect start")
defer println("~~~ Collect end\n")
seq := maps.All(map[int]string{1: "a", 2: "b"})
for key, value := range maps.Collect(seq) {
println(key, ",", value)
}
}
func Copy() {
println("~~~ Copy start")
defer println("~~~ Copy end\n")
src := map[int]string{1: "a", 2: "b"}
dst := map[int]string{1: "z", 3: "c"}
maps.Copy(dst, src)
fmt.Println(dst)
}
func DeleteFunc() {
println("~~~ DeleteFunc start")
defer println("~~~ DeleteFunc end\n")
m := map[int]string{1: "a", 2: "b", 3: "c"}
del := func(key int, value string) bool {
return key%2 == 0
}
maps.DeleteFunc(m, del)
fmt.Println(m)
}
func Equal() {
println("~~~ Equal start")
defer println("~~~ Equal end\n")
println(maps.Equal(map[int]string{1: "a", 2: "b"}, map[int]string{1: "a", 2: "b"}))
println(maps.Equal(map[int]string{1: "a"}, map[int]string{1: "a", 2: "b"}))
println(maps.Equal(map[int]string{1: "a", 2: "b"}, map[int]string{1: "a", 2: "C"}))
println(maps.Equal(map[int]string{1: "a", 2: "b"}, map[int]string{1: "a", 3: "b"}))
println(maps.Equal(map[int]string{1: "a", 2: "b"}, map[int]string{3: "c", 4: "d"}))
}
func EqualFunc() {
println("~~~ EqualFunc start")
defer println("~~~ EqualFunc end\n")
m1 := map[int]int{1: 1, 2: 2}
m2 := map[int]string{1: "1", 2: "2"}
eq := func(value1 int, value2 string) bool {
return strconv.Itoa(value1) == value2
}
fmt.Println(maps.EqualFunc(m1, m2, eq))
}
func Insert() {
println("~~~ Insert start")
defer println("~~~ Insert end\n")
m := map[int]string{1: "a", 2: "b"}
fmt.Println(m)
maps.Insert(m, maps.All(map[int]string{3: "c", 4: "d"}))
fmt.Println(m)
}
func Keys() {
println("~~~ Keys start")
defer println("~~~ Keys end\n")
for key := range maps.Keys(map[int]string{1: "a", 2: "b"}) {
println(key)
}
}
func Values() {
println("~~~ Values start")
defer println("~~~ Values end\n")
for value := range maps.Values(map[int]string{1: "a", 2: "b"}) {
println(value)
}
}
func main() {
All()
Clone()
Collect()
Copy()
DeleteFunc()
Equal()
EqualFunc()
Insert()
Keys()
Values()
}