1package column 2 3import ( 4 "github.com/ClickHouse/clickhouse-go/lib/binary" 5) 6 7type UInt8 struct{ base } 8 9func (UInt8) Read(decoder *binary.Decoder) (interface{}, error) { 10 v, err := decoder.UInt8() 11 if err != nil { 12 return uint8(0), err 13 } 14 return v, nil 15} 16 17func (u *UInt8) Write(encoder *binary.Encoder, v interface{}) error { 18 switch v := v.(type) { 19 case bool: 20 return encoder.Bool(v) 21 case uint8: 22 return encoder.UInt8(v) 23 case int64: 24 return encoder.UInt8(uint8(v)) 25 case uint64: 26 return encoder.UInt8(uint8(v)) 27 case int: 28 return encoder.UInt8(uint8(v)) 29 30 // this relies on Nullable never sending nil values through 31 case *bool: 32 return encoder.Bool(*v) 33 case *uint8: 34 return encoder.UInt8(*v) 35 case *int64: 36 return encoder.UInt8(uint8(*v)) 37 case *uint64: 38 return encoder.UInt8(uint8(*v)) 39 case *int: 40 return encoder.UInt8(uint8(*v)) 41 } 42 43 return &ErrUnexpectedType{ 44 T: v, 45 Column: u, 46 } 47} 48