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  }