github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/jsoni/any_float.go (about)

     1  package jsoni
     2  
     3  import (
     4  	"context"
     5  	"strconv"
     6  )
     7  
     8  type floatAny struct {
     9  	baseAny
    10  	val float64
    11  }
    12  
    13  func (a *floatAny) Parse() *Iterator     { return nil }
    14  func (a *floatAny) ValueType() ValueType { return NumberValue }
    15  func (a *floatAny) MustBeValid() Any     { return a }
    16  func (a *floatAny) LastError() error     { return nil }
    17  func (a *floatAny) ToBool() bool         { return a.ToFloat64() != 0 }
    18  func (a *floatAny) ToInt() int           { return int(a.val) }
    19  func (a *floatAny) ToInt32() int32       { return int32(a.val) }
    20  func (a *floatAny) ToInt64() int64       { return int64(a.val) }
    21  func (a *floatAny) ToUint() uint {
    22  	if a.val > 0 {
    23  		return uint(a.val)
    24  	}
    25  	return 0
    26  }
    27  
    28  func (a *floatAny) ToUint32() uint32 {
    29  	if a.val > 0 {
    30  		return uint32(a.val)
    31  	}
    32  	return 0
    33  }
    34  
    35  func (a *floatAny) ToUint64() uint64 {
    36  	if a.val > 0 {
    37  		return uint64(a.val)
    38  	}
    39  	return 0
    40  }
    41  
    42  func (a *floatAny) ToFloat32() float32 { return float32(a.val) }
    43  func (a *floatAny) ToFloat64() float64 { return a.val }
    44  
    45  func (a *floatAny) ToString() string {
    46  	return strconv.FormatFloat(a.val, 'E', -1, 64)
    47  }
    48  
    49  func (a *floatAny) WriteTo(_ context.Context, stream *Stream) { stream.WriteFloat64(a.val) }
    50  func (a *floatAny) GetInterface(context.Context) interface{}  { return a.val }