github.com/wangyougui/gf/v2@v2.6.5/container/gmap/gmap_z_example_any_any_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/wangyougui/gf.
     6  
     7  package gmap_test
     8  
     9  import (
    10  	"fmt"
    11  
    12  	"github.com/wangyougui/gf/v2/container/gmap"
    13  	"github.com/wangyougui/gf/v2/frame/g"
    14  	"github.com/wangyougui/gf/v2/internal/json"
    15  	"github.com/wangyougui/gf/v2/util/gconv"
    16  )
    17  
    18  func ExampleAnyAnyMap_Iterator() {
    19  	m := gmap.New()
    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 interface{}, v interface{}) bool {
    26  		totalKey += k.(int)
    27  		totalValue += v.(int)
    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 ExampleAnyAnyMap_Clone() {
    41  	m := gmap.New()
    42  
    43  	m.Set("key1", "val1")
    44  	fmt.Println(m)
    45  
    46  	n := m.Clone()
    47  	fmt.Println(n)
    48  
    49  	// Output:
    50  	// {"key1":"val1"}
    51  	// {"key1":"val1"}
    52  }
    53  
    54  func ExampleAnyAnyMap_Map() {
    55  	// non concurrent-safety, a pointer to the underlying data
    56  	m1 := gmap.New()
    57  	m1.Set("key1", "val1")
    58  	fmt.Println("m1:", m1)
    59  
    60  	n1 := m1.Map()
    61  	fmt.Println("before n1:", n1)
    62  	m1.Set("key1", "val2")
    63  	fmt.Println("after n1:", n1)
    64  
    65  	// concurrent-safety, copy of underlying data
    66  	m2 := gmap.New(true)
    67  	m2.Set("key1", "val1")
    68  	fmt.Println("m2:", m2)
    69  
    70  	n2 := m2.Map()
    71  	fmt.Println("before n2:", n2)
    72  	m2.Set("key1", "val2")
    73  	fmt.Println("after n2:", n2)
    74  
    75  	// Output:
    76  	// m1: {"key1":"val1"}
    77  	// before n1: map[key1:val1]
    78  	// after n1: map[key1:val2]
    79  	// m2: {"key1":"val1"}
    80  	// before n2: map[key1:val1]
    81  	// after n2: map[key1:val1]
    82  }
    83  
    84  func ExampleAnyAnyMap_MapCopy() {
    85  	m := gmap.New()
    86  
    87  	m.Set("key1", "val1")
    88  	m.Set("key2", "val2")
    89  	fmt.Println(m)
    90  
    91  	n := m.MapCopy()
    92  	fmt.Println(n)
    93  
    94  	// Output:
    95  	// {"key1":"val1","key2":"val2"}
    96  	// map[key1:val1 key2:val2]
    97  }
    98  
    99  func ExampleAnyAnyMap_MapStrAny() {
   100  	m := gmap.New()
   101  	m.Set(1001, "val1")
   102  	m.Set(1002, "val2")
   103  
   104  	n := m.MapStrAny()
   105  	fmt.Printf("%#v", n)
   106  
   107  	// Output:
   108  	// map[string]interface {}{"1001":"val1", "1002":"val2"}
   109  }
   110  
   111  func ExampleAnyAnyMap_FilterEmpty() {
   112  	m := gmap.NewFrom(g.MapAnyAny{
   113  		"k1": "",
   114  		"k2": nil,
   115  		"k3": 0,
   116  		"k4": 1,
   117  	})
   118  	m.FilterEmpty()
   119  	fmt.Println(m.Map())
   120  
   121  	// Output:
   122  	// map[k4:1]
   123  }
   124  
   125  func ExampleAnyAnyMap_FilterNil() {
   126  	m := gmap.NewFrom(g.MapAnyAny{
   127  		"k1": "",
   128  		"k2": nil,
   129  		"k3": 0,
   130  		"k4": 1,
   131  	})
   132  	m.FilterNil()
   133  	fmt.Printf("%#v", m.Map())
   134  
   135  	// Output:
   136  	// map[interface {}]interface {}{"k1":"", "k3":0, "k4":1}
   137  }
   138  
   139  func ExampleAnyAnyMap_Set() {
   140  	m := gmap.New()
   141  
   142  	m.Set("key1", "val1")
   143  	fmt.Println(m)
   144  
   145  	// Output:
   146  	// {"key1":"val1"}
   147  }
   148  
   149  func ExampleAnyAnyMap_Sets() {
   150  	m := gmap.New()
   151  
   152  	addMap := make(map[interface{}]interface{})
   153  	addMap["key1"] = "val1"
   154  	addMap["key2"] = "val2"
   155  	addMap["key3"] = "val3"
   156  
   157  	m.Sets(addMap)
   158  	fmt.Println(m)
   159  
   160  	// Output:
   161  	// {"key1":"val1","key2":"val2","key3":"val3"}
   162  }
   163  
   164  func ExampleAnyAnyMap_Search() {
   165  	m := gmap.New()
   166  
   167  	m.Set("key1", "val1")
   168  
   169  	value, found := m.Search("key1")
   170  	if found {
   171  		fmt.Println("find key1 value:", value)
   172  	}
   173  
   174  	value, found = m.Search("key2")
   175  	if !found {
   176  		fmt.Println("key2 not find")
   177  	}
   178  
   179  	// Output:
   180  	// find key1 value: val1
   181  	// key2 not find
   182  }
   183  
   184  func ExampleAnyAnyMap_Get() {
   185  	m := gmap.New()
   186  
   187  	m.Set("key1", "val1")
   188  
   189  	fmt.Println("key1 value:", m.Get("key1"))
   190  	fmt.Println("key2 value:", m.Get("key2"))
   191  
   192  	// Output:
   193  	// key1 value: val1
   194  	// key2 value: <nil>
   195  }
   196  
   197  func ExampleAnyAnyMap_Pop() {
   198  	var m gmap.Map
   199  	m.Sets(g.MapAnyAny{
   200  		"k1": "v1",
   201  		"k2": "v2",
   202  		"k3": "v3",
   203  		"k4": "v4",
   204  	})
   205  
   206  	fmt.Println(m.Pop())
   207  
   208  	// May Output:
   209  	// k1 v1
   210  }
   211  
   212  func ExampleAnyAnyMap_Pops() {
   213  	var m gmap.Map
   214  	m.Sets(g.MapAnyAny{
   215  		"k1": "v1",
   216  		"k2": "v2",
   217  		"k3": "v3",
   218  		"k4": "v4",
   219  	})
   220  	fmt.Println(m.Pops(-1))
   221  	fmt.Println("size:", m.Size())
   222  
   223  	m.Sets(g.MapAnyAny{
   224  		"k1": "v1",
   225  		"k2": "v2",
   226  		"k3": "v3",
   227  		"k4": "v4",
   228  	})
   229  	fmt.Println(m.Pops(2))
   230  	fmt.Println("size:", m.Size())
   231  
   232  	// May Output:
   233  	// map[k1:v1 k2:v2 k3:v3 k4:v4]
   234  	// size: 0
   235  	// map[k1:v1 k2:v2]
   236  	// size: 2
   237  }
   238  
   239  func ExampleAnyAnyMap_GetOrSet() {
   240  	m := gmap.New()
   241  	m.Set("key1", "val1")
   242  
   243  	fmt.Println(m.GetOrSet("key1", "NotExistValue"))
   244  	fmt.Println(m.GetOrSet("key2", "val2"))
   245  
   246  	// Output:
   247  	// val1
   248  	// val2
   249  }
   250  
   251  func ExampleAnyAnyMap_GetOrSetFunc() {
   252  	m := gmap.New()
   253  	m.Set("key1", "val1")
   254  
   255  	fmt.Println(m.GetOrSetFunc("key1", func() interface{} {
   256  		return "NotExistValue"
   257  	}))
   258  	fmt.Println(m.GetOrSetFunc("key2", func() interface{} {
   259  		return "NotExistValue"
   260  	}))
   261  
   262  	// Output:
   263  	// val1
   264  	// NotExistValue
   265  }
   266  
   267  func ExampleAnyAnyMap_GetOrSetFuncLock() {
   268  	m := gmap.New()
   269  	m.Set("key1", "val1")
   270  
   271  	fmt.Println(m.GetOrSetFuncLock("key1", func() interface{} {
   272  		return "NotExistValue"
   273  	}))
   274  	fmt.Println(m.GetOrSetFuncLock("key2", func() interface{} {
   275  		return "NotExistValue"
   276  	}))
   277  
   278  	// Output:
   279  	// val1
   280  	// NotExistValue
   281  }
   282  
   283  func ExampleAnyAnyMap_GetVar() {
   284  	m := gmap.New()
   285  	m.Set("key1", "val1")
   286  
   287  	fmt.Println(m.GetVar("key1"))
   288  	fmt.Println(m.GetVar("key2").IsNil())
   289  
   290  	// Output:
   291  	// val1
   292  	// true
   293  }
   294  
   295  func ExampleAnyAnyMap_GetVarOrSet() {
   296  	m := gmap.New()
   297  	m.Set("key1", "val1")
   298  
   299  	fmt.Println(m.GetVarOrSet("key1", "NotExistValue"))
   300  	fmt.Println(m.GetVarOrSet("key2", "val2"))
   301  
   302  	// Output:
   303  	// val1
   304  	// val2
   305  }
   306  
   307  func ExampleAnyAnyMap_GetVarOrSetFunc() {
   308  	m := gmap.New()
   309  	m.Set("key1", "val1")
   310  
   311  	fmt.Println(m.GetVarOrSetFunc("key1", func() interface{} {
   312  		return "NotExistValue"
   313  	}))
   314  	fmt.Println(m.GetVarOrSetFunc("key2", func() interface{} {
   315  		return "NotExistValue"
   316  	}))
   317  
   318  	// Output:
   319  	// val1
   320  	// NotExistValue
   321  }
   322  
   323  func ExampleAnyAnyMap_GetVarOrSetFuncLock() {
   324  	m := gmap.New()
   325  	m.Set("key1", "val1")
   326  
   327  	fmt.Println(m.GetVarOrSetFuncLock("key1", func() interface{} {
   328  		return "NotExistValue"
   329  	}))
   330  	fmt.Println(m.GetVarOrSetFuncLock("key2", func() interface{} {
   331  		return "NotExistValue"
   332  	}))
   333  
   334  	// Output:
   335  	// val1
   336  	// NotExistValue
   337  }
   338  
   339  func ExampleAnyAnyMap_SetIfNotExist() {
   340  	var m gmap.Map
   341  	fmt.Println(m.SetIfNotExist("k1", "v1"))
   342  	fmt.Println(m.SetIfNotExist("k1", "v2"))
   343  	fmt.Println(m.Map())
   344  
   345  	// Output:
   346  	// true
   347  	// false
   348  	// map[k1:v1]
   349  }
   350  
   351  func ExampleAnyAnyMap_SetIfNotExistFunc() {
   352  	var m gmap.Map
   353  	fmt.Println(m.SetIfNotExistFunc("k1", func() interface{} {
   354  		return "v1"
   355  	}))
   356  	fmt.Println(m.SetIfNotExistFunc("k1", func() interface{} {
   357  		return "v2"
   358  	}))
   359  	fmt.Println(m.Map())
   360  
   361  	// Output:
   362  	// true
   363  	// false
   364  	// map[k1:v1]
   365  }
   366  
   367  func ExampleAnyAnyMap_SetIfNotExistFuncLock() {
   368  	var m gmap.Map
   369  	fmt.Println(m.SetIfNotExistFuncLock("k1", func() interface{} {
   370  		return "v1"
   371  	}))
   372  	fmt.Println(m.SetIfNotExistFuncLock("k1", func() interface{} {
   373  		return "v2"
   374  	}))
   375  	fmt.Println(m.Map())
   376  
   377  	// Output:
   378  	// true
   379  	// false
   380  	// map[k1:v1]
   381  }
   382  
   383  func ExampleAnyAnyMap_Remove() {
   384  	var m gmap.Map
   385  	m.Set("k1", "v1")
   386  
   387  	fmt.Println(m.Remove("k1"))
   388  	fmt.Println(m.Remove("k2"))
   389  	fmt.Println(m.Size())
   390  
   391  	// Output:
   392  	// v1
   393  	// <nil>
   394  	// 0
   395  }
   396  
   397  func ExampleAnyAnyMap_Removes() {
   398  	var m gmap.Map
   399  	m.Sets(g.MapAnyAny{
   400  		"k1": "v1",
   401  		"k2": "v2",
   402  		"k3": "v3",
   403  		"k4": "v4",
   404  	})
   405  
   406  	removeList := make([]interface{}, 2)
   407  	removeList = append(removeList, "k1")
   408  	removeList = append(removeList, "k2")
   409  
   410  	m.Removes(removeList)
   411  
   412  	fmt.Println(m.Map())
   413  
   414  	// Output:
   415  	// map[k3:v3 k4:v4]
   416  }
   417  
   418  func ExampleAnyAnyMap_Keys() {
   419  	var m gmap.Map
   420  	m.Sets(g.MapAnyAny{
   421  		"k1": "v1",
   422  		"k2": "v2",
   423  		"k3": "v3",
   424  		"k4": "v4",
   425  	})
   426  	fmt.Println(m.Keys())
   427  
   428  	// May Output:
   429  	// [k1 k2 k3 k4]
   430  }
   431  
   432  func ExampleAnyAnyMap_Values() {
   433  	var m gmap.Map
   434  	m.Sets(g.MapAnyAny{
   435  		"k1": "v1",
   436  		"k2": "v2",
   437  		"k3": "v3",
   438  		"k4": "v4",
   439  	})
   440  	fmt.Println(m.Values())
   441  
   442  	// May Output:
   443  	// [v1 v2 v3 v4]
   444  }
   445  
   446  func ExampleAnyAnyMap_Contains() {
   447  	var m gmap.Map
   448  	m.Sets(g.MapAnyAny{
   449  		"k1": "v1",
   450  		"k2": "v2",
   451  		"k3": "v3",
   452  		"k4": "v4",
   453  	})
   454  
   455  	fmt.Println(m.Contains("k1"))
   456  	fmt.Println(m.Contains("k5"))
   457  
   458  	// Output:
   459  	// true
   460  	// false
   461  }
   462  
   463  func ExampleAnyAnyMap_Size() {
   464  	var m gmap.Map
   465  	m.Sets(g.MapAnyAny{
   466  		"k1": "v1",
   467  		"k2": "v2",
   468  		"k3": "v3",
   469  		"k4": "v4",
   470  	})
   471  
   472  	fmt.Println(m.Size())
   473  
   474  	// Output:
   475  	// 4
   476  }
   477  
   478  func ExampleAnyAnyMap_IsEmpty() {
   479  	var m gmap.Map
   480  	fmt.Println(m.IsEmpty())
   481  
   482  	m.Set("k1", "v1")
   483  	fmt.Println(m.IsEmpty())
   484  
   485  	// Output:
   486  	// true
   487  	// false
   488  }
   489  
   490  func ExampleAnyAnyMap_Clear() {
   491  	var m gmap.Map
   492  	m.Sets(g.MapAnyAny{
   493  		"k1": "v1",
   494  		"k2": "v2",
   495  		"k3": "v3",
   496  		"k4": "v4",
   497  	})
   498  
   499  	m.Clear()
   500  
   501  	fmt.Println(m.Map())
   502  
   503  	// Output:
   504  	// map[]
   505  }
   506  
   507  func ExampleAnyAnyMap_Replace() {
   508  	var m gmap.Map
   509  	m.Sets(g.MapAnyAny{
   510  		"k1": "v1",
   511  	})
   512  
   513  	var n gmap.Map
   514  	n.Sets(g.MapAnyAny{
   515  		"k2": "v2",
   516  	})
   517  
   518  	fmt.Println(m.Map())
   519  
   520  	m.Replace(n.Map())
   521  	fmt.Println(m.Map())
   522  
   523  	n.Set("k2", "v1")
   524  	fmt.Println(m.Map())
   525  
   526  	// Output:
   527  	// map[k1:v1]
   528  	// map[k2:v2]
   529  	// map[k2:v1]
   530  }
   531  
   532  func ExampleAnyAnyMap_LockFunc() {
   533  	var m gmap.Map
   534  	m.Sets(g.MapAnyAny{
   535  		"k1": 1,
   536  		"k2": 2,
   537  		"k3": 3,
   538  		"k4": 4,
   539  	})
   540  
   541  	m.LockFunc(func(m map[interface{}]interface{}) {
   542  		totalValue := 0
   543  		for _, v := range m {
   544  			totalValue += v.(int)
   545  		}
   546  		fmt.Println("totalValue:", totalValue)
   547  	})
   548  
   549  	// Output:
   550  	// totalValue: 10
   551  }
   552  
   553  func ExampleAnyAnyMap_RLockFunc() {
   554  	var m gmap.Map
   555  	m.Sets(g.MapAnyAny{
   556  		"k1": 1,
   557  		"k2": 2,
   558  		"k3": 3,
   559  		"k4": 4,
   560  	})
   561  
   562  	m.RLockFunc(func(m map[interface{}]interface{}) {
   563  		totalValue := 0
   564  		for _, v := range m {
   565  			totalValue += v.(int)
   566  		}
   567  		fmt.Println("totalValue:", totalValue)
   568  	})
   569  
   570  	// Output:
   571  	// totalValue: 10
   572  }
   573  
   574  func ExampleAnyAnyMap_Flip() {
   575  	var m gmap.Map
   576  	m.Sets(g.MapAnyAny{
   577  		"k1": "v1",
   578  	})
   579  	m.Flip()
   580  	fmt.Println(m.Map())
   581  
   582  	// Output:
   583  	// map[v1:k1]
   584  }
   585  
   586  func ExampleAnyAnyMap_Merge() {
   587  	var m1, m2 gmap.Map
   588  	m1.Set("key1", "val1")
   589  	m2.Set("key2", "val2")
   590  	m1.Merge(&m2)
   591  	fmt.Println(m1.Map())
   592  
   593  	// May Output:
   594  	// map[key1:val1 key2:val2]
   595  }
   596  
   597  func ExampleAnyAnyMap_String() {
   598  	var m gmap.Map
   599  	m.Sets(g.MapAnyAny{
   600  		"k1": "v1",
   601  	})
   602  
   603  	fmt.Println(m.String())
   604  
   605  	var m1 *gmap.Map = nil
   606  	fmt.Println(len(m1.String()))
   607  
   608  	// Output:
   609  	// {"k1":"v1"}
   610  	// 0
   611  }
   612  
   613  func ExampleAnyAnyMap_MarshalJSON() {
   614  	var m gmap.Map
   615  	m.Sets(g.MapAnyAny{
   616  		"k1": "v1",
   617  		"k2": "v2",
   618  		"k3": "v3",
   619  		"k4": "v4",
   620  	})
   621  
   622  	bytes, err := json.Marshal(&m)
   623  	if err == nil {
   624  		fmt.Println(gconv.String(bytes))
   625  	}
   626  
   627  	// Output:
   628  	// {"k1":"v1","k2":"v2","k3":"v3","k4":"v4"}
   629  }
   630  
   631  func ExampleAnyAnyMap_UnmarshalJSON() {
   632  	var m gmap.Map
   633  	m.Sets(g.MapAnyAny{
   634  		"k1": "v1",
   635  		"k2": "v2",
   636  		"k3": "v3",
   637  		"k4": "v4",
   638  	})
   639  
   640  	var n gmap.Map
   641  
   642  	err := json.Unmarshal(gconv.Bytes(m.String()), &n)
   643  	if err == nil {
   644  		fmt.Println(n.Map())
   645  	}
   646  
   647  	// Output:
   648  	// map[k1:v1 k2:v2 k3:v3 k4:v4]
   649  }
   650  
   651  func ExampleAnyAnyMap_UnmarshalValue() {
   652  	type User struct {
   653  		Uid   int
   654  		Name  string
   655  		Pass1 string `gconv:"password1"`
   656  		Pass2 string `gconv:"password2"`
   657  	}
   658  
   659  	var (
   660  		m    gmap.AnyAnyMap
   661  		user = User{
   662  			Uid:   1,
   663  			Name:  "john",
   664  			Pass1: "123",
   665  			Pass2: "456",
   666  		}
   667  	)
   668  	if err := gconv.Scan(user, &m); err == nil {
   669  		fmt.Printf("%#v", m.Map())
   670  	}
   671  
   672  	// Output:
   673  	// map[interface {}]interface {}{"Name":"john", "Uid":1, "password1":"123", "password2":"456"}
   674  }