func NewScan(to interface{}) (*Scan, error) { scan := &Scan{ To: to, ToPointers: meta.HasPointers(to), ToStructs: meta.HasAnyStruct(to), } if scan.ToStructs { table, err := NewTable(to) if err != nil { return nil, err } scan.Table = table scan.SQLColumnDict = table.SQLColumnDict() } return scan, nil }
func TestHasAnyStruct(t *testing.T) { var u Foo var up Foo var sup []*Foo assert.True(t, meta.HasAnyStruct(Foo{})) assert.True(t, meta.HasAnyStruct(&Foo{})) assert.True(t, meta.HasAnyStruct([]Foo{})) assert.True(t, meta.HasAnyStruct([]*Foo{})) assert.True(t, meta.HasAnyStruct(&[]Foo{})) assert.True(t, meta.HasAnyStruct(&[]*Foo{})) assert.True(t, meta.HasAnyStruct(u)) assert.True(t, meta.HasAnyStruct(&up)) assert.True(t, meta.HasAnyStruct(sup)) var a string var b int var c bool assert.False(t, meta.HasAnyStruct(123)) assert.False(t, meta.HasAnyStruct(true)) assert.False(t, meta.HasAnyStruct("")) assert.False(t, meta.HasAnyStruct(a)) assert.False(t, meta.HasAnyStruct(b)) assert.False(t, meta.HasAnyStruct(c)) }