github.com/gogf/gf/v2@v2.7.4/container/gmap/gmap_z_example_int_int_test.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with gm file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package gmap_test 8 9 import ( 10 "fmt" 11 12 "github.com/gogf/gf/v2/container/gmap" 13 "github.com/gogf/gf/v2/frame/g" 14 "github.com/gogf/gf/v2/internal/json" 15 "github.com/gogf/gf/v2/util/gconv" 16 ) 17 18 func ExampleIntIntMap_Iterator() { 19 m := gmap.NewIntIntMap() 20 for i := 0; i < 10; i++ { 21 m.Set(i, i*2) 22 } 23 24 var totalKey, totalValue int 25 m.Iterator(func(k int, v int) bool { 26 totalKey += k 27 totalValue += v 28 29 return totalKey < 10 30 }) 31 32 fmt.Println("totalKey:", totalKey) 33 fmt.Println("totalValue:", totalValue) 34 35 // May Output: 36 // totalKey: 11 37 // totalValue: 22 38 } 39 40 func ExampleIntIntMap_Clone() { 41 m := gmap.NewIntIntMap() 42 43 m.Set(1, 1) 44 fmt.Println(m) 45 46 n := m.Clone() 47 fmt.Println(n) 48 49 // Output: 50 // {"1":1} 51 // {"1":1} 52 } 53 54 func ExampleIntIntMap_Map() { 55 // non concurrent-safety, a pointer to the underlying data 56 m1 := gmap.NewIntIntMap() 57 m1.Set(1, 1) 58 fmt.Println("m1:", m1) 59 60 n1 := m1.Map() 61 fmt.Println("before n1:", n1) 62 m1.Set(1, 2) 63 fmt.Println("after n1:", n1) 64 65 // concurrent-safety, copy of underlying data 66 m2 := gmap.New(true) 67 m2.Set(1, "1") 68 fmt.Println("m2:", m2) 69 70 n2 := m2.Map() 71 fmt.Println("before n2:", n2) 72 m2.Set(1, "2") 73 fmt.Println("after n2:", n2) 74 75 // Output: 76 // m1: {"1":1} 77 // before n1: map[1:1] 78 // after n1: map[1:2] 79 // m2: {"1":"1"} 80 // before n2: map[1:1] 81 // after n2: map[1:1] 82 } 83 84 func ExampleIntIntMap_MapCopy() { 85 m := gmap.NewIntIntMap() 86 87 m.Set(1, 1) 88 m.Set(2, 2) 89 fmt.Println(m) 90 91 n := m.MapCopy() 92 fmt.Println(n) 93 94 // Output: 95 // {"1":1,"2":2} 96 // map[1:1 2:2] 97 } 98 99 func ExampleIntIntMap_MapStrAny() { 100 m := gmap.NewIntIntMap() 101 m.Set(1001, 1) 102 m.Set(1002, 2) 103 104 n := m.MapStrAny() 105 fmt.Printf("%#v", n) 106 107 // Output: 108 // map[string]interface {}{"1001":1, "1002":2} 109 } 110 111 func ExampleIntIntMap_FilterEmpty() { 112 m := gmap.NewIntIntMapFrom(g.MapIntInt{ 113 1: 0, 114 2: 1, 115 }) 116 m.FilterEmpty() 117 fmt.Println(m.Map()) 118 119 // Output: 120 // map[2:1] 121 } 122 123 func ExampleIntIntMap_Set() { 124 m := gmap.NewIntIntMap() 125 126 m.Set(1, 1) 127 fmt.Println(m) 128 129 // Output: 130 // {"1":1} 131 } 132 133 func ExampleIntIntMap_Sets() { 134 m := gmap.NewIntIntMap() 135 136 addMap := make(map[int]int) 137 addMap[1] = 1 138 addMap[2] = 12 139 addMap[3] = 123 140 141 m.Sets(addMap) 142 fmt.Println(m) 143 144 // Output: 145 // {"1":1,"2":12,"3":123} 146 } 147 148 func ExampleIntIntMap_Search() { 149 m := gmap.NewIntIntMap() 150 151 m.Set(1, 1) 152 153 value, found := m.Search(1) 154 if found { 155 fmt.Println("find key1 value:", value) 156 } 157 158 value, found = m.Search(2) 159 if !found { 160 fmt.Println("key2 not find") 161 } 162 163 // Output: 164 // find key1 value: 1 165 // key2 not find 166 } 167 168 func ExampleIntIntMap_Get() { 169 m := gmap.NewIntIntMap() 170 171 m.Set(1, 1) 172 173 fmt.Println("key1 value:", m.Get(1)) 174 fmt.Println("key2 value:", m.Get(2)) 175 176 // Output: 177 // key1 value: 1 178 // key2 value: 0 179 } 180 181 func ExampleIntIntMap_Pop() { 182 var m gmap.IntIntMap 183 m.Sets(g.MapIntInt{ 184 1: 1, 185 2: 2, 186 3: 3, 187 4: 4, 188 }) 189 190 fmt.Println(m.Pop()) 191 192 // May Output: 193 // 1 1 194 } 195 196 func ExampleIntIntMap_Pops() { 197 var m gmap.IntIntMap 198 m.Sets(g.MapIntInt{ 199 1: 1, 200 2: 2, 201 3: 3, 202 4: 4, 203 }) 204 fmt.Println(m.Pops(-1)) 205 fmt.Println("size:", m.Size()) 206 207 m.Sets(g.MapIntInt{ 208 1: 1, 209 2: 2, 210 3: 3, 211 4: 4, 212 }) 213 fmt.Println(m.Pops(2)) 214 fmt.Println("size:", m.Size()) 215 216 // May Output: 217 // map[1:1 2:2 3:3 4:4] 218 // size: 0 219 // map[1:1 2:2] 220 // size: 2 221 } 222 223 func ExampleIntIntMap_GetOrSet() { 224 m := gmap.NewIntIntMap() 225 m.Set(1, 1) 226 227 fmt.Println(m.GetOrSet(1, 0)) 228 fmt.Println(m.GetOrSet(2, 2)) 229 230 // Output: 231 // 1 232 // 2 233 } 234 235 func ExampleIntIntMap_GetOrSetFunc() { 236 m := gmap.NewIntIntMap() 237 m.Set(1, 1) 238 239 fmt.Println(m.GetOrSetFunc(1, func() int { 240 return 0 241 })) 242 fmt.Println(m.GetOrSetFunc(2, func() int { 243 return 0 244 })) 245 246 // Output: 247 // 1 248 // 0 249 } 250 251 func ExampleIntIntMap_GetOrSetFuncLock() { 252 m := gmap.NewIntIntMap() 253 m.Set(1, 1) 254 255 fmt.Println(m.GetOrSetFuncLock(1, func() int { 256 return 0 257 })) 258 fmt.Println(m.GetOrSetFuncLock(2, func() int { 259 return 0 260 })) 261 262 // Output: 263 // 1 264 // 0 265 } 266 267 func ExampleIntIntMap_SetIfNotExist() { 268 var m gmap.IntIntMap 269 fmt.Println(m.SetIfNotExist(1, 1)) 270 fmt.Println(m.SetIfNotExist(1, 2)) 271 fmt.Println(m.Map()) 272 273 // Output: 274 // true 275 // false 276 // map[1:1] 277 } 278 279 func ExampleIntIntMap_SetIfNotExistFunc() { 280 var m gmap.IntIntMap 281 fmt.Println(m.SetIfNotExistFunc(1, func() int { 282 return 1 283 })) 284 fmt.Println(m.SetIfNotExistFunc(1, func() int { 285 return 2 286 })) 287 fmt.Println(m.Map()) 288 289 // Output: 290 // true 291 // false 292 // map[1:1] 293 } 294 295 func ExampleIntIntMap_SetIfNotExistFuncLock() { 296 var m gmap.IntIntMap 297 fmt.Println(m.SetIfNotExistFuncLock(1, func() int { 298 return 1 299 })) 300 fmt.Println(m.SetIfNotExistFuncLock(1, func() int { 301 return 2 302 })) 303 fmt.Println(m.Map()) 304 305 // Output: 306 // true 307 // false 308 // map[1:1] 309 } 310 311 func ExampleIntIntMap_Remove() { 312 var m gmap.IntIntMap 313 m.Set(1, 1) 314 315 fmt.Println(m.Remove(1)) 316 fmt.Println(m.Remove(2)) 317 fmt.Println(m.Size()) 318 319 // Output: 320 // 1 321 // 0 322 // 0 323 } 324 325 func ExampleIntIntMap_Removes() { 326 var m gmap.IntIntMap 327 m.Sets(g.MapIntInt{ 328 1: 1, 329 2: 2, 330 3: 3, 331 4: 4, 332 }) 333 334 removeList := make([]int, 2) 335 removeList = append(removeList, 1) 336 removeList = append(removeList, 2) 337 338 m.Removes(removeList) 339 340 fmt.Println(m.Map()) 341 342 // Output: 343 // map[3:3 4:4] 344 } 345 346 func ExampleIntIntMap_Keys() { 347 var m gmap.IntIntMap 348 m.Sets(g.MapIntInt{ 349 1: 1, 350 2: 2, 351 3: 3, 352 4: 4, 353 }) 354 fmt.Println(m.Keys()) 355 356 // May Output: 357 // [1 2 3 4] 358 } 359 360 func ExampleIntIntMap_Values() { 361 var m gmap.IntIntMap 362 m.Sets(g.MapIntInt{ 363 1: 1, 364 2: 2, 365 3: 3, 366 4: 4, 367 }) 368 fmt.Println(m.Values()) 369 370 // May Output: 371 // [1 v2 v3 4] 372 } 373 374 func ExampleIntIntMap_Contains() { 375 var m gmap.IntIntMap 376 m.Sets(g.MapIntInt{ 377 1: 1, 378 2: 2, 379 3: 3, 380 4: 4, 381 }) 382 383 fmt.Println(m.Contains(1)) 384 fmt.Println(m.Contains(5)) 385 386 // Output: 387 // true 388 // false 389 } 390 391 func ExampleIntIntMap_Size() { 392 var m gmap.IntIntMap 393 m.Sets(g.MapIntInt{ 394 1: 1, 395 2: 2, 396 3: 3, 397 4: 4, 398 }) 399 400 fmt.Println(m.Size()) 401 402 // Output: 403 // 4 404 } 405 406 func ExampleIntIntMap_IsEmpty() { 407 var m gmap.IntIntMap 408 fmt.Println(m.IsEmpty()) 409 410 m.Set(1, 1) 411 fmt.Println(m.IsEmpty()) 412 413 // Output: 414 // true 415 // false 416 } 417 418 func ExampleIntIntMap_Clear() { 419 var m gmap.IntIntMap 420 m.Sets(g.MapIntInt{ 421 1: 1, 422 2: 2, 423 3: 3, 424 4: 4, 425 }) 426 427 m.Clear() 428 429 fmt.Println(m.Map()) 430 431 // Output: 432 // map[] 433 } 434 435 func ExampleIntIntMap_Replace() { 436 var m gmap.IntIntMap 437 m.Sets(g.MapIntInt{ 438 1: 1, 439 }) 440 441 var n gmap.IntIntMap 442 n.Sets(g.MapIntInt{ 443 2: 2, 444 }) 445 446 fmt.Println(m.Map()) 447 448 m.Replace(n.Map()) 449 fmt.Println(m.Map()) 450 451 n.Set(2, 1) 452 fmt.Println(m.Map()) 453 454 // Output: 455 // map[1:1] 456 // map[2:2] 457 // map[2:1] 458 } 459 460 func ExampleIntIntMap_LockFunc() { 461 var m gmap.IntIntMap 462 m.Sets(g.MapIntInt{ 463 1: 1, 464 2: 2, 465 3: 3, 466 4: 4, 467 }) 468 469 m.LockFunc(func(m map[int]int) { 470 totalValue := 0 471 for _, v := range m { 472 totalValue += v 473 } 474 fmt.Println("totalValue:", totalValue) 475 }) 476 477 // Output: 478 // totalValue: 10 479 } 480 481 func ExampleIntIntMap_RLockFunc() { 482 var m gmap.IntIntMap 483 m.Sets(g.MapIntInt{ 484 1: 1, 485 2: 2, 486 3: 3, 487 4: 4, 488 }) 489 490 m.RLockFunc(func(m map[int]int) { 491 totalValue := 0 492 for _, v := range m { 493 totalValue += v 494 } 495 fmt.Println("totalValue:", totalValue) 496 }) 497 498 // Output: 499 // totalValue: 10 500 } 501 502 func ExampleIntIntMap_Flip() { 503 var m gmap.IntIntMap 504 m.Sets(g.MapIntInt{ 505 1: 10, 506 }) 507 m.Flip() 508 fmt.Println(m.Map()) 509 510 // Output: 511 // map[10:1] 512 } 513 514 func ExampleIntIntMap_Merge() { 515 var m1, m2 gmap.Map 516 m1.Set(1, "1") 517 m2.Set(2, "2") 518 m1.Merge(&m2) 519 fmt.Println(m1.Map()) 520 521 // May Output: 522 // map[key1:1 key2:2] 523 } 524 525 func ExampleIntIntMap_String() { 526 var m gmap.IntIntMap 527 m.Sets(g.MapIntInt{ 528 1: 1, 529 }) 530 531 fmt.Println(m.String()) 532 533 var m1 *gmap.IntIntMap = nil 534 fmt.Println(len(m1.String())) 535 536 // Output: 537 // {"1":1} 538 // 0 539 } 540 541 func ExampleIntIntMap_MarshalJSON() { 542 var m gmap.IntIntMap 543 m.Sets(g.MapIntInt{ 544 1: 1, 545 2: 2, 546 3: 3, 547 4: 4, 548 }) 549 550 bytes, err := json.Marshal(&m) 551 if err == nil { 552 fmt.Println(gconv.String(bytes)) 553 } 554 555 // Output: 556 // {"1":1,"2":2,"3":3,"4":4} 557 } 558 559 func ExampleIntIntMap_UnmarshalJSON() { 560 var m gmap.IntIntMap 561 m.Sets(g.MapIntInt{ 562 1: 1, 563 2: 2, 564 3: 3, 565 4: 4, 566 }) 567 568 var n gmap.Map 569 570 err := json.Unmarshal(gconv.Bytes(m.String()), &n) 571 if err == nil { 572 fmt.Println(n.Map()) 573 } 574 575 // Output: 576 // map[1:1 2:2 3:3 4:4] 577 } 578 579 func ExampleIntIntMap_UnmarshalValue() { 580 var m gmap.IntIntMap 581 582 n := map[int]int{ 583 1: 1001, 584 2: 1002, 585 3: 1003, 586 } 587 588 if err := gconv.Scan(n, &m); err == nil { 589 fmt.Printf("%#v", m.Map()) 590 } 591 // Output: 592 // map[int]int{1:1001, 2:1002, 3:1003} 593 }