github.com/ice-blockchain/go/src@v0.0.0-20240403114104-1564d284e521/maps/example_test.go (about) 1 // Copyright 2023 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package maps_test 6 7 import ( 8 "fmt" 9 "maps" 10 "strings" 11 ) 12 13 func ExampleClone() { 14 m1 := map[string]int{ 15 "key": 1, 16 } 17 m2 := maps.Clone(m1) 18 m2["key"] = 100 19 fmt.Println(m1["key"]) 20 fmt.Println(m2["key"]) 21 22 m3 := map[string][]int{ 23 "key": {1, 2, 3}, 24 } 25 m4 := maps.Clone(m3) 26 fmt.Println(m4["key"][0]) 27 m4["key"][0] = 100 28 fmt.Println(m3["key"][0]) 29 fmt.Println(m4["key"][0]) 30 31 // Output: 32 // 1 33 // 100 34 // 1 35 // 100 36 // 100 37 } 38 39 func ExampleCopy() { 40 m1 := map[string]int{ 41 "one": 1, 42 "two": 2, 43 } 44 m2 := map[string]int{ 45 "one": 10, 46 } 47 48 maps.Copy(m2, m1) 49 fmt.Println("m2 is:", m2) 50 51 m2["one"] = 100 52 fmt.Println("m1 is:", m1) 53 fmt.Println("m2 is:", m2) 54 55 m3 := map[string][]int{ 56 "one": {1, 2, 3}, 57 "two": {4, 5, 6}, 58 } 59 m4 := map[string][]int{ 60 "one": {7, 8, 9}, 61 } 62 63 maps.Copy(m4, m3) 64 fmt.Println("m4 is:", m4) 65 66 m4["one"][0] = 100 67 fmt.Println("m3 is:", m3) 68 fmt.Println("m4 is:", m4) 69 70 // Output: 71 // m2 is: map[one:1 two:2] 72 // m1 is: map[one:1 two:2] 73 // m2 is: map[one:100 two:2] 74 // m4 is: map[one:[1 2 3] two:[4 5 6]] 75 // m3 is: map[one:[100 2 3] two:[4 5 6]] 76 // m4 is: map[one:[100 2 3] two:[4 5 6]] 77 } 78 79 func ExampleDeleteFunc() { 80 m := map[string]int{ 81 "one": 1, 82 "two": 2, 83 "three": 3, 84 "four": 4, 85 } 86 maps.DeleteFunc(m, func(k string, v int) bool { 87 return v%2 != 0 // delete odd values 88 }) 89 fmt.Println(m) 90 // Output: 91 // map[four:4 two:2] 92 } 93 94 func ExampleEqual() { 95 m1 := map[int]string{ 96 1: "one", 97 10: "Ten", 98 1000: "THOUSAND", 99 } 100 m2 := map[int]string{ 101 1: "one", 102 10: "Ten", 103 1000: "THOUSAND", 104 } 105 m3 := map[int]string{ 106 1: "one", 107 10: "ten", 108 1000: "thousand", 109 } 110 111 fmt.Println(maps.Equal(m1, m2)) 112 fmt.Println(maps.Equal(m1, m3)) 113 // Output: 114 // true 115 // false 116 } 117 118 func ExampleEqualFunc() { 119 m1 := map[int]string{ 120 1: "one", 121 10: "Ten", 122 1000: "THOUSAND", 123 } 124 m2 := map[int][]byte{ 125 1: []byte("One"), 126 10: []byte("Ten"), 127 1000: []byte("Thousand"), 128 } 129 eq := maps.EqualFunc(m1, m2, func(v1 string, v2 []byte) bool { 130 return strings.ToLower(v1) == strings.ToLower(string(v2)) 131 }) 132 fmt.Println(eq) 133 // Output: 134 // true 135 }