package collect import ( "fmt" "log" "reflect" "testing" ) type ABC struct { A int64 `json:"a"` B string `json:"b"` C interface{} `json:"c"` } func TestArray2MapByKey(t *testing.T) { var abcs []*ABC = []*ABC{ {1, "2", 3}, {3, "1", 2}, } a := Array2MapByKey[string](abcs, "B") log.Printf("%##v", a) log.Println(len(a)) } func TestArray2MapByKeyTag(t *testing.T) { var abcs []*ABC = []*ABC{ {1, "2", 3}, {3, "1", 2}, } a := Array2MapByKeyTag[int64](abcs, "a") log.Printf("%##v", a) log.Println(len(a)) } func TestArrayColumnTag(t *testing.T) { var abcs []*ABC = []*ABC{ {1, "2", 3}, {3, "1", 2}, } a := ArrayColumnTag[string](abcs, "b") log.Printf("%##v", a) log.Println(len(a)) } func TestCaseMain(t *testing.T) { type MyStruct struct { SomeIntPtr *int SomeStringPtr *string } var ms MyStruct // Set int pointer { var i interface{} = 3 // of type int f := reflect.ValueOf(&ms).Elem().FieldByName("SomeIntPtr") x := reflect.New(f.Type().Elem()) x.Elem().Set(reflect.ValueOf(i)) f.Set(x) } // Set string pointer { var i interface{} = "hi" // of type string f := reflect.ValueOf(&ms).Elem().Field(1) x := reflect.New(f.Type().Elem()) x.Elem().Set(reflect.ValueOf(i)) f.Set(x) } fmt.Println("ms.SomeIntPtr", *ms.SomeIntPtr) fmt.Println("ms.SomeStringPtr", *ms.SomeStringPtr) }