[Go] maps package
Updated:
개요
- Documentation
- 모든 유형의 map에 유용한 다양한 함수를 정의
- All
- Clone
- Collect
- Copy
- DeleteFunc
- Equal
- EqualFunc
- Insert
- Keys
- Values
예제
- 코드
-
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() }
-
- 실행 결과
-
~~~ All start 1 , a 2 , b ~~~ All end ~~~ Clone start a , a b , b ~~~ Clone end ~~~ Collect start 1 , a 2 , b ~~~ Collect end ~~~ Copy start map[1:a 2:b 3:c] ~~~ Copy end ~~~ DeleteFunc start map[1:a 3:c] ~~~ DeleteFunc end ~~~ Equal start true false false false false ~~~ Equal end ~~~ EqualFunc start true ~~~ EqualFunc end ~~~ Insert start map[1:a 2:b] map[1:a 2:b 3:c 4:d] ~~~ Insert end ~~~ Keys start 1 2 ~~~ Keys end ~~~ Values start a b ~~~ Values end
-