github.com/wangyougui/gf/v2@v2.6.5/container/garray/garray_z_example_normal_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 this file, 5 // You can obtain one at https://github.com/wangyougui/gf. 6 7 package garray_test 8 9 import ( 10 "fmt" 11 12 "github.com/wangyougui/gf/v2/internal/empty" 13 14 "github.com/wangyougui/gf/v2/container/garray" 15 "github.com/wangyougui/gf/v2/frame/g" 16 "github.com/wangyougui/gf/v2/internal/json" 17 "github.com/wangyougui/gf/v2/util/gconv" 18 ) 19 20 func ExampleIntArray_Walk() { 21 var array garray.IntArray 22 tables := g.SliceInt{10, 20} 23 prefix := 99 24 array.Append(tables...) 25 // Add prefix for given table names. 26 array.Walk(func(value int) int { 27 return prefix + value 28 }) 29 fmt.Println(array.Slice()) 30 31 // Output: 32 // [109 119] 33 } 34 35 func ExampleNewIntArray() { 36 s := garray.NewIntArray() 37 s.Append(10) 38 s.Append(20) 39 s.Append(15) 40 s.Append(30) 41 fmt.Println(s.Slice()) 42 43 // Output: 44 // [10 20 15 30] 45 } 46 47 func ExampleNewIntArraySize() { 48 s := garray.NewIntArraySize(3, 5) 49 s.Set(0, 10) 50 s.Set(1, 20) 51 s.Set(2, 15) 52 s.Set(3, 30) 53 fmt.Println(s.Slice(), s.Len(), cap(s.Slice())) 54 55 // Output: 56 // [10 20 15] 3 5 57 } 58 59 func ExampleNewIntArrayRange() { 60 s := garray.NewIntArrayRange(1, 5, 1) 61 fmt.Println(s.Slice(), s.Len(), cap(s.Slice())) 62 63 // Output: 64 // [1 2 3 4 5] 5 8 65 } 66 67 func ExampleNewIntArrayFrom() { 68 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30}) 69 fmt.Println(s.Slice(), s.Len(), cap(s.Slice())) 70 71 // Output: 72 // [10 20 15 30] 4 4 73 } 74 75 func ExampleNewIntArrayFromCopy() { 76 s := garray.NewIntArrayFromCopy(g.SliceInt{10, 20, 15, 30}) 77 fmt.Println(s.Slice(), s.Len(), cap(s.Slice())) 78 79 // Output: 80 // [10 20 15 30] 4 4 81 } 82 83 func ExampleIntArray_At() { 84 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30}) 85 sAt := s.At(2) 86 fmt.Println(sAt) 87 88 // Output: 89 // 15 90 } 91 92 func ExampleIntArray_Get() { 93 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30}) 94 sGet, sBool := s.Get(3) 95 fmt.Println(sGet, sBool) 96 sGet, sBool = s.Get(99) 97 fmt.Println(sGet, sBool) 98 99 // Output: 100 // 30 true 101 // 0 false 102 } 103 104 func ExampleIntArray_Set() { 105 s := garray.NewIntArraySize(3, 5) 106 s.Set(0, 10) 107 s.Set(1, 20) 108 s.Set(2, 15) 109 s.Set(3, 30) 110 fmt.Println(s.Slice()) 111 112 // Output: 113 // [10 20 15] 114 } 115 116 func ExampleIntArray_SetArray() { 117 s := garray.NewIntArray() 118 s.SetArray(g.SliceInt{10, 20, 15, 30}) 119 fmt.Println(s.Slice()) 120 121 // Output: 122 // [10 20 15 30] 123 } 124 125 func ExampleIntArray_Replace() { 126 s := garray.NewIntArray() 127 s.SetArray(g.SliceInt{10, 20, 15, 30}) 128 fmt.Println(s.Slice()) 129 s.Replace(g.SliceInt{12, 13}) 130 fmt.Println(s.Slice()) 131 132 // Output: 133 // [10 20 15 30] 134 // [12 13 15 30] 135 } 136 137 func ExampleIntArray_Sum() { 138 s := garray.NewIntArray() 139 s.SetArray(g.SliceInt{10, 20, 15, 30}) 140 a := s.Sum() 141 fmt.Println(a) 142 143 // Output: 144 // 75 145 } 146 147 func ExampleIntArray_Sort() { 148 s := garray.NewIntArray() 149 s.SetArray(g.SliceInt{10, 20, 15, 30}) 150 a := s.Sort() 151 fmt.Println(a) 152 153 // Output: 154 // [10,15,20,30] 155 } 156 157 func ExampleIntArray_SortFunc() { 158 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30}) 159 fmt.Println(s) 160 s.SortFunc(func(v1, v2 int) bool { 161 // fmt.Println(v1,v2) 162 return v1 > v2 163 }) 164 fmt.Println(s) 165 s.SortFunc(func(v1, v2 int) bool { 166 return v1 < v2 167 }) 168 fmt.Println(s) 169 170 // Output: 171 // [10,20,15,30] 172 // [30,20,15,10] 173 // [10,15,20,30] 174 } 175 176 func ExampleIntArray_InsertBefore() { 177 s := garray.NewIntArray() 178 s.SetArray(g.SliceInt{10, 20, 15, 30}) 179 s.InsertBefore(1, 99) 180 fmt.Println(s.Slice()) 181 182 // Output: 183 // [10 99 20 15 30] 184 } 185 186 func ExampleIntArray_InsertAfter() { 187 s := garray.NewIntArray() 188 s.SetArray(g.SliceInt{10, 20, 15, 30}) 189 s.InsertAfter(1, 99) 190 fmt.Println(s.Slice()) 191 192 // Output: 193 // [10 20 99 15 30] 194 } 195 196 func ExampleIntArray_Remove() { 197 s := garray.NewIntArray() 198 s.SetArray(g.SliceInt{10, 20, 15, 30}) 199 fmt.Println(s) 200 s.Remove(1) 201 fmt.Println(s.Slice()) 202 203 // Output: 204 // [10,20,15,30] 205 // [10 15 30] 206 } 207 208 func ExampleIntArray_RemoveValue() { 209 s := garray.NewIntArray() 210 s.SetArray(g.SliceInt{10, 20, 15, 30}) 211 fmt.Println(s) 212 s.RemoveValue(20) 213 fmt.Println(s.Slice()) 214 215 // Output: 216 // [10,20,15,30] 217 // [10 15 30] 218 } 219 220 func ExampleIntArray_PushLeft() { 221 s := garray.NewIntArray() 222 s.SetArray(g.SliceInt{10, 20, 15, 30}) 223 fmt.Println(s) 224 s.PushLeft(96, 97, 98, 99) 225 fmt.Println(s.Slice()) 226 227 // Output: 228 // [10,20,15,30] 229 // [96 97 98 99 10 20 15 30] 230 } 231 232 func ExampleIntArray_PushRight() { 233 s := garray.NewIntArray() 234 s.SetArray(g.SliceInt{10, 20, 15, 30}) 235 fmt.Println(s) 236 s.PushRight(96, 97, 98, 99) 237 fmt.Println(s.Slice()) 238 239 // Output: 240 // [10,20,15,30] 241 // [10 20 15 30 96 97 98 99] 242 } 243 244 func ExampleIntArray_PopLeft() { 245 s := garray.NewIntArray() 246 s.SetArray(g.SliceInt{10, 20, 15, 30}) 247 fmt.Println(s) 248 s.PopLeft() 249 fmt.Println(s.Slice()) 250 251 // Output: 252 // [10,20,15,30] 253 // [20 15 30] 254 } 255 256 func ExampleIntArray_PopRight() { 257 s := garray.NewIntArray() 258 s.SetArray(g.SliceInt{10, 20, 15, 30}) 259 fmt.Println(s) 260 s.PopRight() 261 fmt.Println(s.Slice()) 262 263 // Output: 264 // [10,20,15,30] 265 // [10 20 15] 266 } 267 268 func ExampleIntArray_PopRand() { 269 s := garray.NewIntArray() 270 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60, 70}) 271 fmt.Println(s) 272 r, _ := s.PopRand() 273 fmt.Println(s) 274 fmt.Println(r) 275 276 // May Output: 277 // [10,20,15,30,40,50,60,70] 278 // [10,20,15,30,40,60,70] 279 // 50 280 } 281 282 func ExampleIntArray_PopRands() { 283 s := garray.NewIntArray() 284 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 285 fmt.Println(s) 286 r := s.PopRands(2) 287 fmt.Println(s) 288 fmt.Println(r) 289 290 // May Output: 291 // [10,20,15,30,40,50,60] 292 // [10,20,15,30,40] 293 // [50 60] 294 } 295 296 func ExampleIntArray_PopLefts() { 297 s := garray.NewIntArray() 298 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 299 fmt.Println(s) 300 r := s.PopLefts(2) 301 fmt.Println(s) 302 fmt.Println(r) 303 304 // Output: 305 // [10,20,15,30,40,50,60] 306 // [15,30,40,50,60] 307 // [10 20] 308 } 309 310 func ExampleIntArray_PopRights() { 311 s := garray.NewIntArray() 312 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 313 fmt.Println(s) 314 r := s.PopRights(2) 315 fmt.Println(s) 316 fmt.Println(r) 317 318 // Output: 319 // [10,20,15,30,40,50,60] 320 // [10,20,15,30,40] 321 // [50 60] 322 } 323 324 func ExampleIntArray_Range() { 325 s := garray.NewIntArray() 326 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 327 fmt.Println(s) 328 r := s.Range(2, 5) 329 fmt.Println(r) 330 331 // Output: 332 // [10,20,15,30,40,50,60] 333 // [15 30 40] 334 } 335 336 func ExampleIntArray_SubSlice() { 337 s := garray.NewIntArray() 338 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 339 fmt.Println(s) 340 r := s.SubSlice(3, 4) 341 fmt.Println(r) 342 343 // Output: 344 // [10,20,15,30,40,50,60] 345 // [30 40 50 60] 346 } 347 348 func ExampleIntArray_Append() { 349 s := garray.NewIntArray() 350 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 351 fmt.Println(s) 352 s.Append(96, 97, 98) 353 fmt.Println(s) 354 355 // Output: 356 // [10,20,15,30,40,50,60] 357 // [10,20,15,30,40,50,60,96,97,98] 358 } 359 360 func ExampleIntArray_Len() { 361 s := garray.NewIntArray() 362 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 363 fmt.Println(s) 364 fmt.Println(s.Len()) 365 366 // Output: 367 // [10,20,15,30,40,50,60] 368 // 7 369 } 370 371 func ExampleIntArray_Slice() { 372 s := garray.NewIntArray() 373 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 374 fmt.Println(s.Slice()) 375 376 // Output: 377 // [10 20 15 30 40 50 60] 378 } 379 380 func ExampleIntArray_Interfaces() { 381 s := garray.NewIntArray() 382 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 383 r := s.Interfaces() 384 fmt.Println(r) 385 386 // Output: 387 // [10 20 15 30 40 50 60] 388 } 389 390 func ExampleIntArray_Clone() { 391 s := garray.NewIntArray() 392 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 393 fmt.Println(s) 394 r := s.Clone() 395 fmt.Println(r) 396 397 // Output: 398 // [10,20,15,30,40,50,60] 399 // [10,20,15,30,40,50,60] 400 } 401 402 func ExampleIntArray_Clear() { 403 s := garray.NewIntArray() 404 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 405 fmt.Println(s) 406 fmt.Println(s.Clear()) 407 fmt.Println(s) 408 409 // Output: 410 // [10,20,15,30,40,50,60] 411 // [] 412 // [] 413 } 414 415 func ExampleIntArray_Contains() { 416 s := garray.NewIntArray() 417 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 418 fmt.Println(s.Contains(20)) 419 fmt.Println(s.Contains(21)) 420 421 // Output: 422 // true 423 // false 424 } 425 426 func ExampleIntArray_Search() { 427 s := garray.NewIntArray() 428 s.SetArray(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 429 fmt.Println(s.Search(20)) 430 fmt.Println(s.Search(21)) 431 432 // Output: 433 // 1 434 // -1 435 } 436 437 func ExampleIntArray_Unique() { 438 s := garray.NewIntArray() 439 s.SetArray(g.SliceInt{10, 20, 15, 15, 20, 50, 60}) 440 fmt.Println(s) 441 fmt.Println(s.Unique()) 442 443 // Output: 444 // [10,20,15,15,20,50,60] 445 // [10,20,15,50,60] 446 } 447 448 func ExampleIntArray_LockFunc() { 449 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 450 s.LockFunc(func(array []int) { 451 for i := 0; i < len(array)-1; i++ { 452 fmt.Println(array[i]) 453 } 454 }) 455 456 // Output: 457 // 10 458 // 20 459 // 15 460 // 30 461 // 40 462 // 50 463 } 464 465 func ExampleIntArray_RLockFunc() { 466 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 467 s.RLockFunc(func(array []int) { 468 for i := 0; i < len(array); i++ { 469 fmt.Println(array[i]) 470 } 471 }) 472 473 // Output: 474 // 10 475 // 20 476 // 15 477 // 30 478 // 40 479 // 50 480 // 60 481 } 482 483 func ExampleIntArray_Merge() { 484 s1 := garray.NewIntArray() 485 s2 := garray.NewIntArray() 486 s1.SetArray(g.SliceInt{10, 20, 15}) 487 s2.SetArray(g.SliceInt{40, 50, 60}) 488 fmt.Println(s1) 489 fmt.Println(s2) 490 s1.Merge(s2) 491 fmt.Println(s1) 492 493 // Output: 494 // [10,20,15] 495 // [40,50,60] 496 // [10,20,15,40,50,60] 497 } 498 499 func ExampleIntArray_Fill() { 500 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 501 fmt.Println(s) 502 s.Fill(2, 3, 99) 503 fmt.Println(s) 504 505 // Output: 506 // [10,20,15,30,40,50,60] 507 // [10,20,99,99,99,50,60] 508 } 509 510 func ExampleIntArray_Chunk() { 511 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 512 fmt.Println(s) 513 r := s.Chunk(3) 514 fmt.Println(r) 515 516 // Output: 517 // [10,20,15,30,40,50,60] 518 // [[10 20 15] [30 40 50] [60]] 519 } 520 521 func ExampleIntArray_Pad() { 522 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 523 s.Pad(8, 99) 524 fmt.Println(s) 525 s.Pad(-10, 89) 526 fmt.Println(s) 527 528 // Output: 529 // [10,20,15,30,40,50,60,99] 530 // [89,89,10,20,15,30,40,50,60,99] 531 } 532 533 func ExampleIntArray_Rand() { 534 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 535 fmt.Println(s) 536 fmt.Println(s.Rand()) 537 538 // May Output: 539 // [10,20,15,30,40,50,60] 540 // 10 true 541 } 542 543 func ExampleIntArray_Rands() { 544 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 545 fmt.Println(s) 546 fmt.Println(s.Rands(3)) 547 548 // May Output: 549 // [10,20,15,30,40,50,60] 550 // [20 50 20] 551 } 552 553 func ExampleIntArray_Shuffle() { 554 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 555 fmt.Println(s) 556 fmt.Println(s.Shuffle()) 557 558 // May Output: 559 // [10,20,15,30,40,50,60] 560 // [10,40,15,50,20,60,30] 561 } 562 563 func ExampleIntArray_Reverse() { 564 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 565 fmt.Println(s) 566 fmt.Println(s.Reverse()) 567 568 // Output: 569 // [10,20,15,30,40,50,60] 570 // [60,50,40,30,15,20,10] 571 } 572 573 func ExampleIntArray_Join() { 574 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 575 fmt.Println(s) 576 fmt.Println(s.Join(",")) 577 578 // Output: 579 // [10,20,15,30,40,50,60] 580 // 10,20,15,30,40,50,60 581 } 582 583 func ExampleIntArray_CountValues() { 584 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 15, 40, 40, 40}) 585 fmt.Println(s.CountValues()) 586 587 // Output: 588 // map[10:1 15:2 20:1 40:3] 589 } 590 591 func ExampleIntArray_Iterator() { 592 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 593 s.Iterator(func(k int, v int) bool { 594 fmt.Println(k, v) 595 return true 596 }) 597 598 // Output: 599 // 0 10 600 // 1 20 601 // 2 15 602 // 3 30 603 // 4 40 604 // 5 50 605 // 6 60 606 } 607 608 func ExampleIntArray_IteratorAsc() { 609 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 610 s.IteratorAsc(func(k int, v int) bool { 611 fmt.Println(k, v) 612 return true 613 }) 614 615 // Output: 616 // 0 10 617 // 1 20 618 // 2 15 619 // 3 30 620 // 4 40 621 // 5 50 622 // 6 60 623 } 624 625 func ExampleIntArray_IteratorDesc() { 626 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 627 s.IteratorDesc(func(k int, v int) bool { 628 fmt.Println(k, v) 629 return true 630 }) 631 632 // Output: 633 // 6 60 634 // 5 50 635 // 4 40 636 // 3 30 637 // 2 15 638 // 1 20 639 // 0 10 640 } 641 642 func ExampleIntArray_String() { 643 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 644 fmt.Println(s) 645 fmt.Println(s.String()) 646 647 // Output: 648 // [10,20,15,30,40,50,60] 649 // [10,20,15,30,40,50,60] 650 } 651 652 func ExampleIntArray_MarshalJSON() { 653 type Student struct { 654 Id int 655 Name string 656 Scores garray.IntArray 657 } 658 var array garray.IntArray 659 array.SetArray(g.SliceInt{98, 97, 96}) 660 s := Student{ 661 Id: 1, 662 Name: "john", 663 Scores: array, 664 } 665 b, _ := json.Marshal(s) 666 fmt.Println(string(b)) 667 668 // Output: 669 // {"Id":1,"Name":"john","Scores":[98,97,96]} 670 } 671 672 func ExampleIntArray_UnmarshalJSON() { 673 b := []byte(`{"Id":1,"Name":"john","Scores":[98,96,97]}`) 674 type Student struct { 675 Id int 676 Name string 677 Scores *garray.IntArray 678 } 679 s := Student{} 680 json.Unmarshal(b, &s) 681 fmt.Println(s) 682 683 // Output: 684 // {1 john [98,96,97]} 685 } 686 687 func ExampleIntArray_UnmarshalValue() { 688 type Student struct { 689 Name string 690 Scores *garray.IntArray 691 } 692 693 var s *Student 694 gconv.Struct(g.Map{ 695 "name": "john", 696 "scores": g.SliceInt{96, 98, 97}, 697 }, &s) 698 fmt.Println(s) 699 700 // Output: 701 // &{john [96,98,97]} 702 } 703 704 func ExampleIntArray_Filter() { 705 array1 := garray.NewIntArrayFrom(g.SliceInt{10, 40, 50, 0, 0, 0, 60}) 706 array2 := garray.NewIntArrayFrom(g.SliceInt{10, 4, 51, 5, 45, 50, 56}) 707 fmt.Println(array1.Filter(func(index int, value int) bool { 708 return empty.IsEmpty(value) 709 })) 710 fmt.Println(array2.Filter(func(index int, value int) bool { 711 return value%2 == 0 712 })) 713 fmt.Println(array2.Filter(func(index int, value int) bool { 714 return value%2 == 1 715 })) 716 717 // Output: 718 // [10,40,50,60] 719 // [51,5,45] 720 // [] 721 } 722 723 func ExampleIntArray_FilterEmpty() { 724 s := garray.NewIntArrayFrom(g.SliceInt{10, 40, 50, 0, 0, 0, 60}) 725 fmt.Println(s) 726 fmt.Println(s.FilterEmpty()) 727 728 // Output: 729 // [10,40,50,0,0,0,60] 730 // [10,40,50,60] 731 } 732 733 func ExampleIntArray_IsEmpty() { 734 s := garray.NewIntArrayFrom(g.SliceInt{10, 20, 15, 30, 40, 50, 60}) 735 fmt.Println(s.IsEmpty()) 736 s1 := garray.NewIntArray() 737 fmt.Println(s1.IsEmpty()) 738 739 // Output: 740 // false 741 // true 742 }