github.com/wangyougui/gf/v2@v2.6.5/container/garray/garray_z_example_normal_str_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 "strings" 12 13 "github.com/wangyougui/gf/v2/internal/empty" 14 15 "github.com/wangyougui/gf/v2/container/garray" 16 "github.com/wangyougui/gf/v2/frame/g" 17 "github.com/wangyougui/gf/v2/internal/json" 18 "github.com/wangyougui/gf/v2/text/gstr" 19 "github.com/wangyougui/gf/v2/util/gconv" 20 ) 21 22 func ExampleStrArray_Walk() { 23 var array garray.StrArray 24 tables := g.SliceStr{"user", "user_detail"} 25 prefix := "gf_" 26 array.Append(tables...) 27 // Add prefix for given table names. 28 array.Walk(func(value string) string { 29 return prefix + value 30 }) 31 fmt.Println(array.Slice()) 32 33 // Output: 34 // [gf_user gf_user_detail] 35 } 36 37 func ExampleNewStrArray() { 38 s := garray.NewStrArray() 39 s.Append("We") 40 s.Append("are") 41 s.Append("GF") 42 s.Append("fans") 43 fmt.Println(s.Slice()) 44 45 // Output: 46 // [We are GF fans] 47 } 48 49 func ExampleNewStrArraySize() { 50 s := garray.NewStrArraySize(3, 5) 51 s.Set(0, "We") 52 s.Set(1, "are") 53 s.Set(2, "GF") 54 s.Set(3, "fans") 55 fmt.Println(s.Slice(), s.Len(), cap(s.Slice())) 56 57 // Output: 58 // [We are GF] 3 5 59 } 60 61 func ExampleNewStrArrayFrom() { 62 s := garray.NewStrArrayFrom(g.SliceStr{"We", "are", "GF", "fans", "!"}) 63 fmt.Println(s.Slice(), s.Len(), cap(s.Slice())) 64 65 // Output: 66 // [We are GF fans !] 5 5 67 } 68 69 func ExampleStrArray_At() { 70 s := garray.NewStrArrayFrom(g.SliceStr{"We", "are", "GF", "fans", "!"}) 71 sAt := s.At(2) 72 fmt.Println(sAt) 73 74 // Output: 75 // GF 76 } 77 78 func ExampleStrArray_Get() { 79 s := garray.NewStrArrayFrom(g.SliceStr{"We", "are", "GF", "fans", "!"}) 80 sGet, sBool := s.Get(3) 81 fmt.Println(sGet, sBool) 82 83 // Output: 84 // fans true 85 } 86 87 func ExampleStrArray_Set() { 88 s := garray.NewStrArraySize(3, 5) 89 s.Set(0, "We") 90 s.Set(1, "are") 91 s.Set(2, "GF") 92 s.Set(3, "fans") 93 fmt.Println(s.Slice()) 94 95 // Output: 96 // [We are GF] 97 } 98 99 func ExampleStrArray_SetArray() { 100 s := garray.NewStrArray() 101 s.SetArray(g.SliceStr{"We", "are", "GF", "fans", "!"}) 102 fmt.Println(s.Slice()) 103 104 // Output: 105 // [We are GF fans !] 106 } 107 108 func ExampleStrArray_Replace() { 109 s := garray.NewStrArray() 110 s.SetArray(g.SliceStr{"We", "are", "GF", "fans", "!"}) 111 fmt.Println(s.Slice()) 112 s.Replace(g.SliceStr{"Happy", "coding"}) 113 fmt.Println(s.Slice()) 114 115 // Output: 116 // [We are GF fans !] 117 // [Happy coding GF fans !] 118 } 119 120 func ExampleStrArray_Sum() { 121 s := garray.NewStrArray() 122 s.SetArray(g.SliceStr{"3", "5", "10"}) 123 a := s.Sum() 124 fmt.Println(a) 125 126 // Output: 127 // 18 128 } 129 130 func ExampleStrArray_Sort() { 131 s := garray.NewStrArray() 132 s.SetArray(g.SliceStr{"b", "d", "a", "c"}) 133 a := s.Sort() 134 fmt.Println(a) 135 136 // Output: 137 // ["a","b","c","d"] 138 } 139 140 func ExampleStrArray_SortFunc() { 141 s := garray.NewStrArrayFrom(g.SliceStr{"b", "c", "a"}) 142 fmt.Println(s) 143 s.SortFunc(func(v1, v2 string) bool { 144 return gstr.Compare(v1, v2) > 0 145 }) 146 fmt.Println(s) 147 s.SortFunc(func(v1, v2 string) bool { 148 return gstr.Compare(v1, v2) < 0 149 }) 150 fmt.Println(s) 151 152 // Output: 153 // ["b","c","a"] 154 // ["c","b","a"] 155 // ["a","b","c"] 156 } 157 158 func ExampleStrArray_InsertBefore() { 159 s := garray.NewStrArray() 160 s.SetArray(g.SliceStr{"a", "b", "c", "d"}) 161 s.InsertBefore(1, "here") 162 fmt.Println(s.Slice()) 163 164 // Output: 165 // [a here b c d] 166 } 167 168 func ExampleStrArray_InsertAfter() { 169 s := garray.NewStrArray() 170 s.SetArray(g.SliceStr{"a", "b", "c", "d"}) 171 s.InsertAfter(1, "here") 172 fmt.Println(s.Slice()) 173 174 // Output: 175 // [a b here c d] 176 } 177 178 func ExampleStrArray_Remove() { 179 s := garray.NewStrArray() 180 s.SetArray(g.SliceStr{"a", "b", "c", "d"}) 181 s.Remove(1) 182 fmt.Println(s.Slice()) 183 184 // Output: 185 // [a c d] 186 } 187 188 func ExampleStrArray_RemoveValue() { 189 s := garray.NewStrArray() 190 s.SetArray(g.SliceStr{"a", "b", "c", "d"}) 191 s.RemoveValue("b") 192 fmt.Println(s.Slice()) 193 194 // Output: 195 // [a c d] 196 } 197 198 func ExampleStrArray_PushLeft() { 199 s := garray.NewStrArray() 200 s.SetArray(g.SliceStr{"a", "b", "c", "d"}) 201 s.PushLeft("We", "are", "GF", "fans") 202 fmt.Println(s.Slice()) 203 204 // Output: 205 // [We are GF fans a b c d] 206 } 207 208 func ExampleStrArray_PushRight() { 209 s := garray.NewStrArray() 210 s.SetArray(g.SliceStr{"a", "b", "c", "d"}) 211 s.PushRight("We", "are", "GF", "fans") 212 fmt.Println(s.Slice()) 213 214 // Output: 215 // [a b c d We are GF fans] 216 } 217 218 func ExampleStrArray_PopLeft() { 219 s := garray.NewStrArray() 220 s.SetArray(g.SliceStr{"a", "b", "c", "d"}) 221 s.PopLeft() 222 fmt.Println(s.Slice()) 223 224 // Output: 225 // [b c d] 226 } 227 228 func ExampleStrArray_PopRight() { 229 s := garray.NewStrArray() 230 s.SetArray(g.SliceStr{"a", "b", "c", "d"}) 231 s.PopRight() 232 fmt.Println(s.Slice()) 233 234 // Output: 235 // [a b c] 236 } 237 238 func ExampleStrArray_PopRand() { 239 s := garray.NewStrArray() 240 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 241 r, _ := s.PopRand() 242 fmt.Println(r) 243 244 // May Output: 245 // e 246 } 247 248 func ExampleStrArray_PopRands() { 249 s := garray.NewStrArray() 250 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 251 r := s.PopRands(2) 252 fmt.Println(r) 253 254 // May Output: 255 // [e c] 256 } 257 258 func ExampleStrArray_PopLefts() { 259 s := garray.NewStrArray() 260 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 261 r := s.PopLefts(2) 262 fmt.Println(r) 263 fmt.Println(s) 264 265 // Output: 266 // [a b] 267 // ["c","d","e","f","g","h"] 268 } 269 270 func ExampleStrArray_PopRights() { 271 s := garray.NewStrArray() 272 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 273 r := s.PopRights(2) 274 fmt.Println(r) 275 fmt.Println(s) 276 277 // Output: 278 // [g h] 279 // ["a","b","c","d","e","f"] 280 } 281 282 func ExampleStrArray_Range() { 283 s := garray.NewStrArray() 284 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 285 r := s.Range(2, 5) 286 fmt.Println(r) 287 288 // Output: 289 // [c d e] 290 } 291 292 func ExampleStrArray_SubSlice() { 293 s := garray.NewStrArray() 294 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 295 r := s.SubSlice(3, 4) 296 fmt.Println(r) 297 298 // Output: 299 // [d e f g] 300 } 301 302 func ExampleStrArray_Append() { 303 s := garray.NewStrArray() 304 s.SetArray(g.SliceStr{"We", "are", "GF", "fans"}) 305 s.Append("a", "b", "c") 306 fmt.Println(s) 307 308 // Output: 309 // ["We","are","GF","fans","a","b","c"] 310 } 311 312 func ExampleStrArray_Len() { 313 s := garray.NewStrArray() 314 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 315 fmt.Println(s.Len()) 316 317 // Output: 318 // 8 319 } 320 321 func ExampleStrArray_Slice() { 322 s := garray.NewStrArray() 323 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 324 fmt.Println(s.Slice()) 325 326 // Output: 327 // [a b c d e f g h] 328 } 329 330 func ExampleStrArray_Interfaces() { 331 s := garray.NewStrArray() 332 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 333 r := s.Interfaces() 334 fmt.Println(r) 335 336 // Output: 337 // [a b c d e f g h] 338 } 339 340 func ExampleStrArray_Clone() { 341 s := garray.NewStrArray() 342 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 343 r := s.Clone() 344 fmt.Println(r) 345 fmt.Println(s) 346 347 // Output: 348 // ["a","b","c","d","e","f","g","h"] 349 // ["a","b","c","d","e","f","g","h"] 350 } 351 352 func ExampleStrArray_Clear() { 353 s := garray.NewStrArray() 354 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 355 fmt.Println(s) 356 fmt.Println(s.Clear()) 357 fmt.Println(s) 358 359 // Output: 360 // ["a","b","c","d","e","f","g","h"] 361 // [] 362 // [] 363 } 364 365 func ExampleStrArray_Contains() { 366 s := garray.NewStrArray() 367 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 368 fmt.Println(s.Contains("e")) 369 fmt.Println(s.Contains("z")) 370 371 // Output: 372 // true 373 // false 374 } 375 376 func ExampleStrArray_ContainsI() { 377 s := garray.NewStrArray() 378 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 379 fmt.Println(s.ContainsI("E")) 380 fmt.Println(s.ContainsI("z")) 381 382 // Output: 383 // true 384 // false 385 } 386 387 func ExampleStrArray_Search() { 388 s := garray.NewStrArray() 389 s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 390 fmt.Println(s.Search("e")) 391 fmt.Println(s.Search("z")) 392 393 // Output: 394 // 4 395 // -1 396 } 397 398 func ExampleStrArray_Unique() { 399 s := garray.NewStrArray() 400 s.SetArray(g.SliceStr{"a", "b", "c", "c", "c", "d", "d"}) 401 fmt.Println(s.Unique()) 402 403 // Output: 404 // ["a","b","c","d"] 405 } 406 407 func ExampleStrArray_LockFunc() { 408 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c"}) 409 s.LockFunc(func(array []string) { 410 array[len(array)-1] = "GF fans" 411 }) 412 fmt.Println(s) 413 414 // Output: 415 // ["a","b","GF fans"] 416 } 417 418 func ExampleStrArray_RLockFunc() { 419 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "d", "e"}) 420 s.RLockFunc(func(array []string) { 421 for i := 0; i < len(array); i++ { 422 fmt.Println(array[i]) 423 } 424 }) 425 426 // Output: 427 // a 428 // b 429 // c 430 // d 431 // e 432 } 433 434 func ExampleStrArray_Merge() { 435 s1 := garray.NewStrArray() 436 s2 := garray.NewStrArray() 437 s1.SetArray(g.SliceStr{"a", "b", "c"}) 438 s2.SetArray(g.SliceStr{"d", "e", "f"}) 439 s1.Merge(s2) 440 fmt.Println(s1) 441 442 // Output: 443 // ["a","b","c","d","e","f"] 444 } 445 446 func ExampleStrArray_Fill() { 447 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 448 s.Fill(2, 3, "here") 449 fmt.Println(s) 450 451 // Output: 452 // ["a","b","here","here","here","f","g","h"] 453 } 454 455 func ExampleStrArray_Chunk() { 456 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 457 r := s.Chunk(3) 458 fmt.Println(r) 459 460 // Output: 461 // [[a b c] [d e f] [g h]] 462 } 463 464 func ExampleStrArray_Pad() { 465 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c"}) 466 s.Pad(7, "here") 467 fmt.Println(s) 468 s.Pad(-10, "there") 469 fmt.Println(s) 470 471 // Output: 472 // ["a","b","c","here","here","here","here"] 473 // ["there","there","there","a","b","c","here","here","here","here"] 474 } 475 476 func ExampleStrArray_Rand() { 477 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 478 fmt.Println(s.Rand()) 479 480 // May Output: 481 // c true 482 } 483 484 func ExampleStrArray_Rands() { 485 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 486 fmt.Println(s.Rands(3)) 487 488 // May Output: 489 // [e h e] 490 } 491 492 func ExampleStrArray_Shuffle() { 493 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 494 fmt.Println(s.Shuffle()) 495 496 // May Output: 497 // ["a","c","e","d","b","g","f","h"] 498 } 499 500 func ExampleStrArray_Reverse() { 501 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"}) 502 fmt.Println(s.Reverse()) 503 504 // Output: 505 // ["h","g","f","e","d","c","b","a"] 506 } 507 508 func ExampleStrArray_Join() { 509 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c"}) 510 fmt.Println(s.Join(",")) 511 512 // Output: 513 // a,b,c 514 } 515 516 func ExampleStrArray_CountValues() { 517 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "c", "c", "d", "d"}) 518 fmt.Println(s.CountValues()) 519 520 // Output: 521 // map[a:1 b:1 c:3 d:2] 522 } 523 524 func ExampleStrArray_Iterator() { 525 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c"}) 526 s.Iterator(func(k int, v string) bool { 527 fmt.Println(k, v) 528 return true 529 }) 530 531 // Output: 532 // 0 a 533 // 1 b 534 // 2 c 535 } 536 537 func ExampleStrArray_IteratorAsc() { 538 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c"}) 539 s.IteratorAsc(func(k int, v string) bool { 540 fmt.Println(k, v) 541 return true 542 }) 543 544 // Output: 545 // 0 a 546 // 1 b 547 // 2 c 548 } 549 550 func ExampleStrArray_IteratorDesc() { 551 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c"}) 552 s.IteratorDesc(func(k int, v string) bool { 553 fmt.Println(k, v) 554 return true 555 }) 556 557 // Output: 558 // 2 c 559 // 1 b 560 // 0 a 561 } 562 563 func ExampleStrArray_String() { 564 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c"}) 565 fmt.Println(s.String()) 566 567 // Output: 568 // ["a","b","c"] 569 } 570 571 func ExampleStrArray_MarshalJSON() { 572 type Student struct { 573 Id int 574 Name string 575 Lessons []string 576 } 577 s := Student{ 578 Id: 1, 579 Name: "john", 580 Lessons: []string{"Math", "English", "Music"}, 581 } 582 b, _ := json.Marshal(s) 583 fmt.Println(string(b)) 584 585 // Output: 586 // {"Id":1,"Name":"john","Lessons":["Math","English","Music"]} 587 } 588 589 func ExampleStrArray_UnmarshalJSON() { 590 b := []byte(`{"Id":1,"Name":"john","Lessons":["Math","English","Sport"]}`) 591 type Student struct { 592 Id int 593 Name string 594 Lessons *garray.StrArray 595 } 596 s := Student{} 597 json.Unmarshal(b, &s) 598 fmt.Println(s) 599 600 // Output: 601 // {1 john ["Math","English","Sport"]} 602 } 603 604 func ExampleStrArray_UnmarshalValue() { 605 type Student struct { 606 Name string 607 Lessons *garray.StrArray 608 } 609 var s *Student 610 gconv.Struct(g.Map{ 611 "name": "john", 612 "lessons": []byte(`["Math","English","Sport"]`), 613 }, &s) 614 fmt.Println(s) 615 616 var s1 *Student 617 gconv.Struct(g.Map{ 618 "name": "john", 619 "lessons": g.SliceStr{"Math", "English", "Sport"}, 620 }, &s1) 621 fmt.Println(s1) 622 623 // Output: 624 // &{john ["Math","English","Sport"]} 625 // &{john ["Math","English","Sport"]} 626 } 627 628 func ExampleStrArray_Filter() { 629 s := garray.NewStrArrayFrom(g.SliceStr{"Math", "English", "Sport"}) 630 s1 := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "", "c", "", "", "d"}) 631 fmt.Println(s1.Filter(func(index int, value string) bool { 632 return empty.IsEmpty(value) 633 })) 634 635 fmt.Println(s.Filter(func(index int, value string) bool { 636 return strings.Contains(value, "h") 637 })) 638 639 // Output: 640 // ["a","b","c","d"] 641 // ["Sport"] 642 } 643 644 func ExampleStrArray_FilterEmpty() { 645 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "", "c", "", "", "d"}) 646 fmt.Println(s.FilterEmpty()) 647 648 // Output: 649 // ["a","b","c","d"] 650 } 651 652 func ExampleStrArray_IsEmpty() { 653 s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "", "c", "", "", "d"}) 654 fmt.Println(s.IsEmpty()) 655 s1 := garray.NewStrArray() 656 fmt.Println(s1.IsEmpty()) 657 658 // Output: 659 // false 660 // true 661 }