github.com/wangyougui/gf/v2@v2.6.5/container/gvar/gvar_z_example_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 gvar_test 8 9 import ( 10 "fmt" 11 12 "github.com/wangyougui/gf/v2/container/gvar" 13 "github.com/wangyougui/gf/v2/frame/g" 14 "github.com/wangyougui/gf/v2/internal/json" 15 ) 16 17 // New 18 func ExampleVarNew() { 19 v := gvar.New(400) 20 fmt.Println(v) 21 22 // Output: 23 // 400 24 } 25 26 // Clone 27 func ExampleVar_Clone() { 28 tmp := "fisrt hello" 29 v := gvar.New(tmp) 30 g.DumpWithType(v.Clone()) 31 fmt.Println(v == v.Clone()) 32 33 // Output: 34 // *gvar.Var(11) "fisrt hello" 35 // false 36 } 37 38 // Set 39 func ExampleVar_Set() { 40 var v = gvar.New(100.00) 41 g.Dump(v.Set(200.00)) 42 g.Dump(v) 43 44 // Output: 45 // 100 46 // "200" 47 } 48 49 // Val 50 func ExampleVar_Val() { 51 var v = gvar.New(100.00) 52 g.DumpWithType(v.Val()) 53 54 // Output: 55 // float64(100) 56 } 57 58 // Interface 59 func ExampleVar_Interface() { 60 var v = gvar.New(100.00) 61 g.DumpWithType(v.Interface()) 62 63 // Output: 64 // float64(100) 65 } 66 67 // Bytes 68 func ExampleVar_Bytes() { 69 var v = gvar.New("GoFrame") 70 g.DumpWithType(v.Bytes()) 71 72 // Output: 73 // []byte(7) "GoFrame" 74 } 75 76 // String 77 func ExampleVar_String() { 78 var v = gvar.New("GoFrame") 79 g.DumpWithType(v.String()) 80 81 // Output: 82 // string(7) "GoFrame" 83 } 84 85 // Bool 86 func ExampleVar_Bool() { 87 var v = gvar.New(true) 88 g.DumpWithType(v.Bool()) 89 90 // Output: 91 // bool(true) 92 } 93 94 // Int 95 func ExampleVar_Int() { 96 var v = gvar.New(-1000) 97 g.DumpWithType(v.Int()) 98 99 // Output: 100 // int(-1000) 101 } 102 103 // Uint 104 func ExampleVar_Uint() { 105 var v = gvar.New(1000) 106 g.DumpWithType(v.Uint()) 107 108 // Output: 109 // uint(1000) 110 } 111 112 // Float32 113 func ExampleVar_Float32() { 114 var price = gvar.New(100.00) 115 g.DumpWithType(price.Float32()) 116 117 // Output: 118 // float32(100) 119 } 120 121 // Time 122 func ExampleVar_Time() { 123 var v = gvar.New("2021-11-11 00:00:00") 124 g.DumpWithType(v.Time()) 125 126 // Output: 127 // time.Time(29) "2021-11-11 00:00:00 +0800 CST" 128 } 129 130 // GTime 131 func ExampleVar_GTime() { 132 var v = gvar.New("2021-11-11 00:00:00") 133 g.DumpWithType(v.GTime()) 134 135 // Output: 136 // *gtime.Time(19) "2021-11-11 00:00:00" 137 } 138 139 // Duration 140 func ExampleVar_Duration() { 141 var v = gvar.New("300s") 142 g.DumpWithType(v.Duration()) 143 144 // Output: 145 // time.Duration(4) "5m0s" 146 } 147 148 // MarshalJSON 149 func ExampleVar_MarshalJSON() { 150 testMap := g.Map{ 151 "code": "0001", 152 "name": "Golang", 153 "count": 10, 154 } 155 156 var v = gvar.New(testMap) 157 res, err := json.Marshal(&v) 158 if err != nil { 159 panic(err) 160 } 161 g.DumpWithType(res) 162 163 // Output: 164 // []byte(42) "{"code":"0001","count":10,"name":"Golang"}" 165 } 166 167 // UnmarshalJSON 168 func ExampleVar_UnmarshalJSON() { 169 tmp := []byte(`{ 170 "Code": "0003", 171 "Name": "Golang Book3", 172 "Quantity": 3000, 173 "Price": 300, 174 "OnSale": true 175 }`) 176 var v = gvar.New(map[string]interface{}{}) 177 if err := json.Unmarshal(tmp, &v); err != nil { 178 panic(err) 179 } 180 181 g.Dump(v) 182 183 // Output: 184 // "{\"Code\":\"0003\",\"Name\":\"Golang Book3\",\"OnSale\":true,\"Price\":300,\"Quantity\":3000}" 185 } 186 187 // UnmarshalValue 188 func ExampleVar_UnmarshalValue() { 189 tmp := g.Map{ 190 "code": "00002", 191 "name": "GoFrame", 192 "price": 100, 193 "sale": true, 194 } 195 196 var v = gvar.New(map[string]interface{}{}) 197 if err := v.UnmarshalValue(tmp); err != nil { 198 panic(err) 199 } 200 g.Dump(v) 201 202 // Output: 203 // "{\"code\":\"00002\",\"name\":\"GoFrame\",\"price\":100,\"sale\":true}" 204 } 205 206 // IsNil 207 func ExampleVar_IsNil() { 208 g.Dump(gvar.New(0).IsNil()) 209 g.Dump(gvar.New(0.1).IsNil()) 210 // true 211 g.Dump(gvar.New(nil).IsNil()) 212 g.Dump(gvar.New("").IsNil()) 213 214 // Output: 215 // false 216 // false 217 // true 218 // false 219 } 220 221 // IsEmpty 222 func ExampleVar_IsEmpty() { 223 g.Dump(gvar.New(0).IsEmpty()) 224 g.Dump(gvar.New(nil).IsEmpty()) 225 g.Dump(gvar.New("").IsEmpty()) 226 g.Dump(gvar.New(g.Map{"k": "v"}).IsEmpty()) 227 228 // Output: 229 // true 230 // true 231 // true 232 // false 233 } 234 235 // IsInt 236 func ExampleVar_IsInt() { 237 g.Dump(gvar.New(0).IsInt()) 238 g.Dump(gvar.New(0.1).IsInt()) 239 g.Dump(gvar.New(nil).IsInt()) 240 g.Dump(gvar.New("").IsInt()) 241 242 // Output: 243 // true 244 // false 245 // false 246 // false 247 } 248 249 // IsUint 250 func ExampleVar_IsUint() { 251 g.Dump(gvar.New(0).IsUint()) 252 g.Dump(gvar.New(uint8(8)).IsUint()) 253 g.Dump(gvar.New(nil).IsUint()) 254 255 // Output: 256 // false 257 // true 258 // false 259 } 260 261 // IsFloat 262 func ExampleVar_IsFloat() { 263 g.Dump(g.NewVar(uint8(8)).IsFloat()) 264 g.Dump(g.NewVar(float64(8)).IsFloat()) 265 g.Dump(g.NewVar(0.1).IsFloat()) 266 267 // Output: 268 // false 269 // true 270 // true 271 } 272 273 // IsSlice 274 func ExampleVar_IsSlice() { 275 g.Dump(g.NewVar(0).IsSlice()) 276 g.Dump(g.NewVar(g.Slice{0}).IsSlice()) 277 278 // Output: 279 // false 280 // true 281 } 282 283 // IsMap 284 func ExampleVar_IsMap() { 285 g.Dump(g.NewVar(0).IsMap()) 286 g.Dump(g.NewVar(g.Map{"k": "v"}).IsMap()) 287 g.Dump(g.NewVar(g.Slice{}).IsMap()) 288 289 // Output: 290 // false 291 // true 292 // false 293 } 294 295 // IsStruct 296 func ExampleVar_IsStruct() { 297 g.Dump(g.NewVar(0).IsStruct()) 298 g.Dump(g.NewVar(g.Map{"k": "v"}).IsStruct()) 299 300 a := struct{}{} 301 g.Dump(g.NewVar(a).IsStruct()) 302 g.Dump(g.NewVar(&a).IsStruct()) 303 304 // Output: 305 // false 306 // false 307 // true 308 // true 309 } 310 311 // ListItemValues 312 func ExampleVar_ListItemValues() { 313 var goods1 = g.List{ 314 g.Map{"id": 1, "price": 100.00}, 315 g.Map{"id": 2, "price": 0}, 316 g.Map{"id": 3, "price": nil}, 317 } 318 var v = gvar.New(goods1) 319 fmt.Println(v.ListItemValues("id")) 320 fmt.Println(v.ListItemValues("price")) 321 322 // Output: 323 // [1 2 3] 324 // [100 0 <nil>] 325 } 326 327 // ListItemValuesUnique 328 func ExampleVar_ListItemValuesUnique() { 329 var ( 330 goods1 = g.List{ 331 g.Map{"id": 1, "price": 100.00}, 332 g.Map{"id": 2, "price": 100.00}, 333 g.Map{"id": 3, "price": nil}, 334 } 335 v = gvar.New(goods1) 336 ) 337 338 fmt.Println(v.ListItemValuesUnique("id")) 339 fmt.Println(v.ListItemValuesUnique("price")) 340 341 // Output: 342 // [1 2 3] 343 // [100 <nil>] 344 } 345 346 func ExampleVar_Struct() { 347 params1 := g.Map{ 348 "uid": 1, 349 "Name": "john", 350 } 351 v := gvar.New(params1) 352 type tartget struct { 353 Uid int 354 Name string 355 } 356 t := new(tartget) 357 if err := v.Struct(&t); err != nil { 358 panic(err) 359 } 360 g.Dump(t) 361 362 // Output: 363 // { 364 // Uid: 1, 365 // Name: "john", 366 // } 367 } 368 369 func ExampleVar_Structs() { 370 paramsArray := []g.Map{} 371 params1 := g.Map{ 372 "uid": 1, 373 "Name": "golang", 374 } 375 params2 := g.Map{ 376 "uid": 2, 377 "Name": "java", 378 } 379 380 paramsArray = append(paramsArray, params1, params2) 381 v := gvar.New(paramsArray) 382 type tartget struct { 383 Uid int 384 Name string 385 } 386 var t []tartget 387 if err := v.Structs(&t); err != nil { 388 panic(err) 389 } 390 g.DumpWithType(t) 391 392 // Output: 393 // []gvar_test.tartget(2) [ 394 // gvar_test.tartget(2) { 395 // Uid: int(1), 396 // Name: string(6) "golang", 397 // }, 398 // gvar_test.tartget(2) { 399 // Uid: int(2), 400 // Name: string(4) "java", 401 // }, 402 // ] 403 } 404 405 // Ints 406 func ExampleVar_Ints() { 407 var ( 408 arr = []int{1, 2, 3, 4, 5} 409 obj = gvar.New(arr) 410 ) 411 412 fmt.Println(obj.Ints()) 413 414 // Output: 415 // [1 2 3 4 5] 416 } 417 418 // Int64s 419 func ExampleVar_Int64s() { 420 var ( 421 arr = []int64{1, 2, 3, 4, 5} 422 obj = gvar.New(arr) 423 ) 424 425 fmt.Println(obj.Int64s()) 426 427 // Output: 428 // [1 2 3 4 5] 429 } 430 431 // Uints 432 func ExampleVar_Uints() { 433 var ( 434 arr = []uint{1, 2, 3, 4, 5} 435 obj = gvar.New(arr) 436 ) 437 fmt.Println(obj.Uints()) 438 439 // Output: 440 // [1 2 3 4 5] 441 } 442 443 // Uint64s 444 func ExampleVar_Uint64s() { 445 var ( 446 arr = []uint64{1, 2, 3, 4, 5} 447 obj = gvar.New(arr) 448 ) 449 450 fmt.Println(obj.Uint64s()) 451 452 // Output: 453 // [1 2 3 4 5] 454 } 455 456 // Floats 457 func ExampleVar_Floats() { 458 var ( 459 arr = []float64{1, 2, 3, 4, 5} 460 obj = gvar.New(arr) 461 ) 462 463 fmt.Println(obj.Floats()) 464 465 // Output: 466 // [1 2 3 4 5] 467 } 468 469 // Float32s 470 func ExampleVar_Float32s() { 471 var ( 472 arr = []float32{1, 2, 3, 4, 5} 473 obj = gvar.New(arr) 474 ) 475 476 fmt.Println(obj.Float32s()) 477 478 // Output: 479 // [1 2 3 4 5] 480 } 481 482 // Float64s 483 func ExampleVar_Float64s() { 484 var ( 485 arr = []float64{1, 2, 3, 4, 5} 486 obj = gvar.New(arr) 487 ) 488 489 fmt.Println(obj.Float64s()) 490 491 // Output: 492 // [1 2 3 4 5] 493 } 494 495 // Strings 496 func ExampleVar_Strings() { 497 var ( 498 arr = []string{"GoFrame", "Golang"} 499 obj = gvar.New(arr) 500 ) 501 fmt.Println(obj.Strings()) 502 503 // Output: 504 // [GoFrame Golang] 505 } 506 507 // Interfaces 508 func ExampleVar_Interfaces() { 509 var ( 510 arr = []string{"GoFrame", "Golang"} 511 obj = gvar.New(arr) 512 ) 513 514 fmt.Println(obj.Interfaces()) 515 516 // Output: 517 // [GoFrame Golang] 518 } 519 520 // Slice 521 func ExampleVar_Slice() { 522 var ( 523 arr = []string{"GoFrame", "Golang"} 524 obj = gvar.New(arr) 525 ) 526 527 fmt.Println(obj.Slice()) 528 529 // Output: 530 // [GoFrame Golang] 531 } 532 533 // Array 534 func ExampleVar_Array() { 535 var ( 536 arr = []string{"GoFrame", "Golang"} 537 obj = gvar.New(arr) 538 ) 539 fmt.Println(obj.Array()) 540 541 // Output: 542 // [GoFrame Golang] 543 } 544 545 // Vars 546 func ExampleVar_Vars() { 547 var ( 548 arr = []string{"GoFrame", "Golang"} 549 obj = gvar.New(arr) 550 ) 551 552 fmt.Println(obj.Vars()) 553 554 // Output: 555 // [GoFrame Golang] 556 } 557 558 // Map 559 func ExampleVar_Map() { 560 var ( 561 m = g.Map{"id": 1, "price": 100.00} 562 v = gvar.New(m) 563 res = v.Map() 564 ) 565 566 fmt.Println(res["id"], res["price"]) 567 568 // Output: 569 // 1 100 570 } 571 572 // MapStrAny 573 func ExampleVar_MapStrAny() { 574 var ( 575 m1 = g.Map{"id": 1, "price": 100} 576 v = gvar.New(m1) 577 v2 = v.MapStrAny() 578 ) 579 580 fmt.Println(v2["price"], v2["id"]) 581 582 // Output: 583 // 100 1 584 } 585 586 // MapStrStr 587 func ExampleVar_MapStrStr() { 588 var ( 589 m1 = g.Map{"id": 1, "price": 100} 590 v = gvar.New(m1) 591 v2 = v.MapStrStr() 592 ) 593 594 fmt.Println(v2["price"] + "$") 595 596 // Output: 597 // 100$ 598 } 599 600 // MapStrVar 601 func ExampleVar_MapStrVar() { 602 var ( 603 m1 = g.Map{"id": 1, "price": 100} 604 v = gvar.New(m1) 605 v2 = v.MapStrVar() 606 ) 607 608 fmt.Println(v2["price"].Float64() * 100) 609 610 // Output: 611 // 10000 612 } 613 614 // MapDeep 615 func ExampleVar_MapDeep() { 616 var ( 617 m1 = g.Map{"id": 1, "price": 100} 618 m2 = g.Map{"product": m1} 619 v = gvar.New(m2) 620 v2 = v.MapDeep() 621 ) 622 623 fmt.Println(v2["product"]) 624 625 // Output: 626 // map[id:1 price:100] 627 } 628 629 // MapStrStrDeep 630 func ExampleVar_MapStrStrDeep() { 631 var ( 632 m1 = g.Map{"id": 1, "price": 100} 633 m2 = g.Map{"product": m1} 634 v = gvar.New(m2) 635 v2 = v.MapStrStrDeep() 636 ) 637 638 fmt.Println(v2["product"]) 639 640 // Output: 641 // {"id":1,"price":100} 642 } 643 644 // MapStrVarDeep 645 func ExampleVar_MapStrVarDeep() { 646 var ( 647 m1 = g.Map{"id": 1, "price": 100} 648 m2 = g.Map{"product": m1} 649 m3 = g.Map{} 650 v = gvar.New(m2) 651 v2 = v.MapStrVarDeep() 652 v3 = gvar.New(m3).MapStrVarDeep() 653 ) 654 655 fmt.Println(v2["product"]) 656 fmt.Println(v3) 657 658 // Output: 659 // {"id":1,"price":100} 660 // map[] 661 } 662 663 // Maps 664 func ExampleVar_Maps() { 665 var m = gvar.New(g.ListIntInt{g.MapIntInt{0: 100, 1: 200}, g.MapIntInt{0: 300, 1: 400}}) 666 fmt.Printf("%#v", m.Maps()) 667 668 // Output: 669 // []map[string]interface {}{map[string]interface {}{"0":100, "1":200}, map[string]interface {}{"0":300, "1":400}} 670 } 671 672 // MapsDeep 673 func ExampleVar_MapsDeep() { 674 var ( 675 p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}} 676 p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}} 677 v = gvar.New(g.ListStrAny{p1, p2}) 678 v2 = v.MapsDeep() 679 ) 680 681 fmt.Printf("%#v", v2) 682 683 // Output: 684 // []map[string]interface {}{map[string]interface {}{"product":map[string]interface {}{"id":1, "price":100}}, map[string]interface {}{"product":map[string]interface {}{"id":2, "price":200}}} 685 } 686 687 // MapToMap 688 func ExampleVar_MapToMap() { 689 var ( 690 m1 = gvar.New(g.MapIntInt{0: 100, 1: 200}) 691 m2 = g.MapStrStr{} 692 ) 693 694 err := m1.MapToMap(&m2) 695 if err != nil { 696 panic(err) 697 } 698 699 fmt.Printf("%#v", m2) 700 701 // Output: 702 // map[string]string{"0":"100", "1":"200"} 703 } 704 705 // MapToMaps 706 func ExampleVar_MapToMaps() { 707 var ( 708 p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}} 709 p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}} 710 v = gvar.New(g.ListStrAny{p1, p2}) 711 v2 []g.MapStrStr 712 ) 713 714 err := v.MapToMaps(&v2) 715 if err != nil { 716 panic(err) 717 } 718 fmt.Printf("%#v", v2) 719 720 // Output: 721 // []map[string]string{map[string]string{"product":"{\"id\":1,\"price\":100}"}, map[string]string{"product":"{\"id\":2,\"price\":200}"}} 722 } 723 724 // MapToMapsDeep 725 func ExampleVar_MapToMapsDeep() { 726 var ( 727 p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}} 728 p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}} 729 v = gvar.New(g.ListStrAny{p1, p2}) 730 v2 []g.MapStrStr 731 ) 732 733 err := v.MapToMapsDeep(&v2) 734 if err != nil { 735 panic(err) 736 } 737 fmt.Printf("%#v", v2) 738 739 // Output: 740 // []map[string]string{map[string]string{"product":"{\"id\":1,\"price\":100}"}, map[string]string{"product":"{\"id\":2,\"price\":200}"}} 741 } 742 743 // Scan 744 func ExampleVar_Scan() { 745 type Student struct { 746 Id *g.Var 747 Name *g.Var 748 Scores *g.Var 749 } 750 var ( 751 s Student 752 m = g.Map{ 753 "Id": 1, 754 "Name": "john", 755 "Scores": []int{100, 99, 98}, 756 } 757 ) 758 v := gvar.New(m) 759 if err := v.Scan(&s); err == nil { 760 g.DumpWithType(s) 761 } 762 763 // Output: 764 // gvar_test.Student(3) { 765 // Id: *gvar.Var(1) "1", 766 // Name: *gvar.Var(4) "john", 767 // Scores: *gvar.Var(11) "[100,99,98]", 768 // } 769 }