element

package
v0.1.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2023 License: Apache-2.0 Imports: 11 Imported by: 0

README

go-etl数据类型说明

这个包主要定义了go-etl中的数据类型

记录

//Record 记录
type Record interface {
	fmt.Stringer

	Add(Column) error                      //新增列
	GetByIndex(i int) (Column, error)      //获取第i个列
	GetByName(name string) (Column, error) //获取列名为name的列
	Set(i int, c Column) error             //设置第i列
	ColumnNumber() int                     //获取列数
	ByteSize() int64                       //字节流大小
	MemorySize() int64                     //内存大小
}

数据类型转化

go-etl支持六种内部数据类型:

  • bigInt:定点数(int64、int32、int16、int8、BigInt等)。
  • decimal:浮点数(float32、float63、BigDecimal(无限精度)等)。
  • string:字符串类型,底层不限长,使用通用字符集(Unicode)。
  • time:日期类型。
  • bool:布尔值。
  • bytes:二进制,可以存放诸如MP3等非结构化数据。

对应地,有TimeColumnValueBigIntColumnValueDecimalColumnValueBytesColumnValueStringColumnValueBoolColumnValue六种ColumnValue的实现。

这些ColumnValue提供一系列以as开头的数据类型转换转换方法。

//ColumnValue 列值
type ColumnValue interface {
	fmt.Stringer

	Type() ColumnType                    //列类型
	IsNil() bool                         //是否为空
	AsBool() (bool, error)               //转化为布尔值
	AsBigInt() (*big.Int, error)         //转化为整数
	AsDecimal() (decimal.Decimal, error) //转化为高精度实数
	AsString() (string, error)           //转化为字符串
	AsBytes() ([]byte, error)            //转化为字节流
	AsTime() (time.Time, error)          // 转化为时间
}

在ColumnValue的基础上实现了下列方法

//Column 列
type Column interface {
	ColumnValue
	AsInt64() (int64, error)     //转化为64位整数
	AsFloat64() (float64, error) //转化为64位实数
	Clone() (Column, error)      //克隆
	Cmp(Column) (int, error)     //比较, 1代表大于, 0代表相等, -1代表小于
	Name() string                //列名
	ByteSize() int64             //字节流大小
	MemorySize() int64           //内存大小
}

DataX的内部类型在实现上会选用不同的golang类型: 现在有两种实现方式,但是老方式在处理大树时存在性能上的问题,目前新实现方式还是beta版,未有较好实践验证。

  • 老的实现方式
内部类型 实现类型 备注
time time.Time
bigInt big.Int 使用无限精度的大整数,保证不失真
decimal decimal.Decimal 用decimal.Decimal表示,保证不失真
bytes []byte
string string
bool bool
  • 目前的实现方式
内部类型 实现类型 备注
time time.Time
bigInt BigIntNumber 使用Int64和BigIntStr交叉保存的方式,保证不失真
decimal DecimalNumber 使用Float64, Int64,BigIntStr,DecimalStr和Decimal交叉保存的方式,保证不失真
bytes []byte
string string
bool bool

这两种实现方式之间的差距主要在数值方面做出了调整,通过以下接口进行了整合:

//NumberConverter 数字转化器
type NumberConverter interface {
	ConvertBigIntFromInt(i int64) (num BigIntNumber)
	ConvertDecimalFromFloat(f float64) (num DecimalNumber)
	ConvertBigInt(s string) (num BigIntNumber, err error)
	ConvertDecimal(s string) (num DecimalNumber, err error)
}

//Number 数字
type Number interface {
	Bool() (bool, error)
	String() string
}

//BigIntNumber 高精度整数
type BigIntNumber interface {
	Number

	Int64() (int64, error)
	Decimal() DecimalNumber
	CloneBigInt() BigIntNumber
	AsBigInt() *big.Int
}

//DecimalNumber 高精度实数
type DecimalNumber interface {
	Number

	Float64() (float64, error)
	BigInt() BigIntNumber
	CloneDecimal() DecimalNumber
	AsDecimal() decimal.Decimal
}

主要实现了NumberConverter的Converter(目前的实现方式)和OldConverter(老的实现方式),Converter比OldConverter性能更好, 通过number_bench_test.go的测试结果如下:

BenchmarkConverter_ConvertFromBigInt-4                	34292768	        40.13 ns/op	       8 B/op	       0 allocs/op
BenchmarkOldConverter_ConvertFromBigInt-4             	19314712	        58.69 ns/op	      16 B/op	       1 allocs/op
BenchmarkConverter_ConvertDecimalFromloat-4           	100000000	        15.74 ns/op	       8 B/op	       0 allocs/op
BenchmarkOldConverter_ConvertDecimalFromFloat-4       	 1654504	       725.8 ns/op	      48 B/op	       2 allocs/op
BenchmarkConverter_ConvertBigInt_Int64-4              	 5020077	       230.0 ns/op	      39 B/op	       2 allocs/op
BenchmarkOldConverter_ConvertBigInt_Int64-4           	 2232102	       627.3 ns/op	     111 B/op	       5 allocs/op
BenchmarkCoventor_ConvertBigInt_large_number-4        	   50010	     21211 ns/op	    8064 B/op	     216 allocs/op
BenchmarkOldCoventor_ConvertBigInt_large_number-4     	   23709	     51818 ns/op	    9216 B/op	     360 allocs/op
BenchmarkConverter_ConvertDecimal_Int64-4             	 3830624	       312.6 ns/op	      39 B/op	       2 allocs/op
BenchmarkOldConverter_ConvertDecimal_Int64-4          	 1995441	       611.4 ns/op	     116 B/op	       4 allocs/op
BenchmarkConverter_ConvertDecimal_Float64-4           	 1707649	       671.4 ns/op	     178 B/op	       5 allocs/op
BenchmarkOldConverter_ConvertDecimal_Float64-4        	 1229505	       991.1 ns/op	     191 B/op	       6 allocs/op
BenchmarkConverter_ConvertDecimal-4                   	   80113	     15009 ns/op	    2280 B/op	     144 allocs/op
BenchmarkOldConverter_ConvertDecimal-4                	   56880	     26496 ns/op	    4608 B/op	     288 allocs/op
BenchmarkConverter_ConvertDecimal_large_number-4      	   45754	     22387 ns/op	    5184 B/op	     144 allocs/op
BenchmarkOldConverter_ConvertDecimal_large_number-4   	   16726	     69543 ns/op	   13248 B/op	     432 allocs/op
BenchmarkConverter_ConvertDecimal_Exp-4               	   15516	     86355 ns/op	   18432 B/op	     648 allocs/op
BenchmarkOldConverter_ConvertDecimal_Exp-4            	   17992	     56777 ns/op	   11520 B/op	     432 allocs/op
BenchmarkDecimal_Decmial_String-4                     	 3443062	       361.0 ns/op	      88 B/op	       5 allocs/op
BenchmarkDecimal_DecmialStr_String-4                  	1000000000	         0.6694 ns/op	       0 B/op	       0 allocs/op
BenchmarkDecimal_Float64_String-4                     	 5254669	       260.7 ns/op	      48 B/op	       2 allocs/op
BenchmarkDecimal_Int64_String-4                       	13537401	        89.62 ns/op	      24 B/op	       1 allocs/op
BenchmarkDecimal_BigInt_String-4                      	 4664106	       247.4 ns/op	      56 B/op	       3 allocs/op
BenchmarkDecimal_BigIntStr_String-4                   	1000000000	         0.6873 ns/op	       0 B/op	       0 allocs/op

另外,如果遇到问题可以通过修改number.go中_DefaultNumberConverter的取值回到老的实现方式

类型之间相互转换的关系如下:

from\to time bigInt decimal bytes string bool
time - 不支持 不支持 支持指定时间格式的转化(一般支持默认时间格式) 支持指定时间格式的转化(一般支持默认时间格式) 不支持
bigInt 不支持 - 支持 支持 支持 支持非0的转化成ture,0转化成false
decimal 不支持 取整,直接截取整数部分 - 支持 支持 支持非0的转化成ture,0转化成false
bytes 仅支持指定时间格式的转化(一般支持默认时间格式) 实数型以及科学性计数法字符串会被取整 实数型以及科学性计数法字符串 - 支持 支持"1"," t", "T", "TRUE", "true", "True"转化为true,"0", "f"," F", "FALSE", "false", "False"转化为false
string 仅支持指定时间格式的转化(一般支持默认时间格式) 实数型以及科学性计数法字符串会被取整 实数型以及科学性计数法字符串 支持 - 支持"1", "t", "T", "TRUE", "true", "True"转化为"true","0", "f", "F", "FALSE", "false", "False"转化为false
bool 不支持 ture转化为1,false转化为0 ture转化为1.0,false转化为0.0 true转化为"true",false转化为"false" true转化为"true",false转化为"false" -

注:默认时间格式为2006-01-02 15:04:05.999999999Z07:00

Documentation

Overview

Package element 提供各个类型的列值,列,记录以及记录通道

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrColumnExist              = errors.New("column exist")                  //列存在错误
	ErrColumnNotExist           = errors.New("column does not exist")         //列不存在错误
	ErrNilValue                 = errors.New("column value is nil")           //空值错误
	ErrIndexOutOfRange          = errors.New("column index is out of range")  //索引值超出范围
	ErrValueNotInt64            = errors.New("value is not int64")            //不是int64错误
	ErrValueInfinity            = errors.New("value is infinity")             //无穷大实数错误
	ErrNotColumnValueClonable   = errors.New("columnValue is not clonable")   //不是可克隆列值
	ErrNotColumnValueComparable = errors.New("columnValue is not comparable") //不是可比较列值
	ErrColumnNameNotEqual       = errors.New("column name is not equal")      //列名不同
)

错误

View Source
var DefaultTimeFormat = "2006-01-02 15:04:05.999999999Z07:00"

DefaultTimeFormat 默认时间格式

Functions

func ByteSize added in v0.1.2

func ByteSize(src interface{}) int

ByteSize 字节大小

Types

type BigInt

type BigInt struct {
	// contains filtered or unexported fields
}

BigInt 大整数

func (*BigInt) AsBigInt

func (b *BigInt) AsBigInt() *big.Int

AsBigInt 转化为高精度整数

func (*BigInt) AsDecimal

func (b *BigInt) AsDecimal() decimal.Decimal

AsDecimal 转化为高精度精度

func (*BigInt) BigInt

func (b *BigInt) BigInt() BigIntNumber

BigInt 转化为高精度整数

func (*BigInt) Bool

func (b *BigInt) Bool() (bool, error)

Bool 转化为布尔值

func (*BigInt) CloneBigInt

func (b *BigInt) CloneBigInt() BigIntNumber

CloneBigInt 克隆高精度整数

func (*BigInt) CloneDecimal

func (b *BigInt) CloneDecimal() DecimalNumber

CloneDecimal 克隆高精度实数

func (*BigInt) Decimal

func (b *BigInt) Decimal() DecimalNumber

Decimal 转化为高精度实数

func (*BigInt) Float64

func (b *BigInt) Float64() (v float64, err error)

Float64 转化为64位实数

func (*BigInt) Int64

func (b *BigInt) Int64() (int64, error)

Int64 转化为64位整数

func (*BigInt) String

func (b *BigInt) String() string

Decimal 转化为字符串

type BigIntColumnValue

type BigIntColumnValue struct {
	// contains filtered or unexported fields
}

BigIntColumnValue 整数列值

func (*BigIntColumnValue) AsBigInt

func (b *BigIntColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 转化成整数

func (*BigIntColumnValue) AsBool

func (b *BigIntColumnValue) AsBool() (bool, error)

AsBool 转化成布尔值,不是0的转化为true,是0的转化成false

func (*BigIntColumnValue) AsBytes

func (b *BigIntColumnValue) AsBytes() ([]byte, error)

AsBytes 转化成字节流,如1234556790转化为1234556790

func (*BigIntColumnValue) AsDecimal

func (b *BigIntColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 转化成高精度实数

func (*BigIntColumnValue) AsString

func (b *BigIntColumnValue) AsString() (string, error)

AsString 转化成字符串,如1234556790转化为1234556790

func (*BigIntColumnValue) AsTime

func (b *BigIntColumnValue) AsTime() (time.Time, error)

AsTime 目前整数无法转化成时间

func (*BigIntColumnValue) Clone

func (b *BigIntColumnValue) Clone() ColumnValue

Clone 克隆整数列属性

func (*BigIntColumnValue) Cmp

func (b *BigIntColumnValue) Cmp(right ColumnValue) (int, error)

Cmp 返回1代表大于, 0代表相等, -1代表小于

func (*BigIntColumnValue) IsNil

func (n *BigIntColumnValue) IsNil() bool

IsNil 是否为空

func (*BigIntColumnValue) String

func (b *BigIntColumnValue) String() string

func (*BigIntColumnValue) Type

func (b *BigIntColumnValue) Type() ColumnType

Type 返回列类型

type BigIntNumber

type BigIntNumber interface {
	Number

	Int64() (int64, error)
	Decimal() DecimalNumber
	CloneBigInt() BigIntNumber
	AsBigInt() *big.Int
}

BigIntNumber 高精度整数

type BigIntStr

type BigIntStr struct {
	// contains filtered or unexported fields
}

BigIntStr 高精度整数

func (*BigIntStr) AsBigInt

func (b *BigIntStr) AsBigInt() *big.Int

AsBigInt 转化为高精度整数

func (*BigIntStr) AsDecimal

func (b *BigIntStr) AsDecimal() decimal.Decimal

AsDecimal 转化为高精度精度

func (*BigIntStr) BigInt

func (b *BigIntStr) BigInt() BigIntNumber

BigInt 转化为高精度整数

func (*BigIntStr) Bool

func (b *BigIntStr) Bool() (bool, error)

Bool 转化为布尔值

func (*BigIntStr) CloneBigInt

func (b *BigIntStr) CloneBigInt() BigIntNumber

CloneBigInt 克隆高精度整数

func (*BigIntStr) CloneDecimal

func (b *BigIntStr) CloneDecimal() DecimalNumber

CloneDecimal 克隆高精度实数

func (*BigIntStr) Decimal

func (b *BigIntStr) Decimal() DecimalNumber

Decimal 转化为高精度实数

func (*BigIntStr) Float64

func (b *BigIntStr) Float64() (v float64, err error)

Float64 转化为64位实数

func (*BigIntStr) Int64

func (b *BigIntStr) Int64() (int64, error)

Int64 转化为64位整数

func (*BigIntStr) String

func (b *BigIntStr) String() string

Decimal 转化为字符串

type BoolColumnValue

type BoolColumnValue struct {
	// contains filtered or unexported fields
}

BoolColumnValue 布尔列值

func (*BoolColumnValue) AsBigInt

func (b *BoolColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 转化成整数,true转化为1,false转化为0

func (*BoolColumnValue) AsBool

func (b *BoolColumnValue) AsBool() (bool, error)

AsBool 转化成布尔值

func (*BoolColumnValue) AsBytes

func (b *BoolColumnValue) AsBytes() ([]byte, error)

AsBytes 转化成字节流,true转化为"true",false转化为"false"

func (*BoolColumnValue) AsDecimal

func (b *BoolColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 转化成高精度实数,true转化为1.0,false转化为0.0

func (*BoolColumnValue) AsString

func (b *BoolColumnValue) AsString() (string, error)

AsString 转化成字符串,true转化为"true",false转化为"false"

func (*BoolColumnValue) AsTime

func (b *BoolColumnValue) AsTime() (time.Time, error)

AsTime 目前布尔无法转化成时间

func (*BoolColumnValue) Clone

func (b *BoolColumnValue) Clone() ColumnValue

Clone 克隆布尔列值

func (*BoolColumnValue) Cmp

func (b *BoolColumnValue) Cmp(right ColumnValue) (int, error)

Cmp 返回1代表大于, 0代表相等, -1代表小于

func (*BoolColumnValue) IsNil

func (n *BoolColumnValue) IsNil() bool

IsNil 是否为空

func (*BoolColumnValue) String

func (b *BoolColumnValue) String() string

func (*BoolColumnValue) Type

func (b *BoolColumnValue) Type() ColumnType

Type 返回列类型

type BytesColumnValue

type BytesColumnValue struct {
	TimeEncoder //时间编码器
	// contains filtered or unexported fields
}

BytesColumnValue 字节流列值

func (*BytesColumnValue) AsBigInt

func (b *BytesColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 转化为整数,实数型以及科学性计数法字符串会被取整,不是数值型的会报错 如123.67转化为123 123.12转化为123

func (*BytesColumnValue) AsBool

func (b *BytesColumnValue) AsBool() (bool, error)

AsBool 1, t, T, TRUE, true, True转化为true 0, f, F, FALSE, false, False转化为false,如果不是上述情况会报错

func (*BytesColumnValue) AsBytes

func (b *BytesColumnValue) AsBytes() ([]byte, error)

AsBytes 转化成字节流

func (*BytesColumnValue) AsDecimal

func (b *BytesColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 转化为高精度师叔,实数型以及科学性计数法字符串能够转化,不是数值型的会报错

func (*BytesColumnValue) AsString

func (b *BytesColumnValue) AsString() (string, error)

AsString 转化为字符串

func (*BytesColumnValue) AsTime

func (b *BytesColumnValue) AsTime() (t time.Time, err error)

AsTime 根据时间编码器转化成时间,不符合时间编码器格式会报错

func (*BytesColumnValue) Clone

func (b *BytesColumnValue) Clone() ColumnValue

Clone 克隆字节流列值

func (*BytesColumnValue) Cmp

func (b *BytesColumnValue) Cmp(right ColumnValue) (int, error)

Cmp 返回1代表大于, 0代表相等, -1代表小于

func (*BytesColumnValue) IsNil

func (n *BytesColumnValue) IsNil() bool

IsNil 是否为空

func (*BytesColumnValue) String

func (b *BytesColumnValue) String() string

func (*BytesColumnValue) Type

func (b *BytesColumnValue) Type() ColumnType

Type 返回列类型

type Column

type Column interface {
	ColumnValue
	AsInt64() (int64, error)     //转化为64位整数
	AsFloat64() (float64, error) //转化为64位实数
	Clone() (Column, error)      //克隆
	Cmp(Column) (int, error)     //比较, 1代表大于, 0代表相等, -1代表小于
	Name() string                //列名
	ByteSize() int64             //字节流大小
	MemorySize() int64           //内存大小
}

Column 列

func NewDefaultColumn

func NewDefaultColumn(v ColumnValue, name string, byteSize int) Column

NewDefaultColumn 根据列值v,列名name,字节流大小byteSize,生成默认列

type ColumnType

type ColumnType string

ColumnType 列类型

const (
	TypeUnknown ColumnType = "unknown" //未知类型
	TypeBool    ColumnType = "bool"    //布尔类型
	TypeBigInt  ColumnType = "bigInt"  //整数类型
	TypeDecimal ColumnType = "decimal" //高精度实数类型
	TypeString  ColumnType = "string"  //字符串类型
	TypeBytes   ColumnType = "bytes"   //字节流类型
	TypeTime    ColumnType = "time"    //时间类型
)

列类型枚举

func (ColumnType) String

func (c ColumnType) String() string

String 打印显示

type ColumnValue

type ColumnValue interface {
	fmt.Stringer

	Type() ColumnType                  //列类型
	IsNil() bool                       //是否为空
	AsBool() (bool, error)             //转化为布尔值
	AsBigInt() (BigIntNumber, error)   //转化为整数
	AsDecimal() (DecimalNumber, error) //转化为高精度实数
	AsString() (string, error)         //转化为字符串
	AsBytes() ([]byte, error)          //转化为字节流
	AsTime() (time.Time, error)        // 转化为时间
}

ColumnValue 列值

func NewBigIntColumnValue

func NewBigIntColumnValue(v *big.Int) ColumnValue

NewBigIntColumnValue 从big.Int v中获取整数列值

func NewBigIntColumnValueFromInt64

func NewBigIntColumnValueFromInt64(v int64) ColumnValue

NewBigIntColumnValueFromInt64 从int64 v中获取整数列值

func NewBigIntColumnValueFromString

func NewBigIntColumnValueFromString(v string) (ColumnValue, error)

NewBigIntColumnValueFromString 从string v中获取整数列值 当string v不是整数时,返回错误

func NewBoolColumnValue

func NewBoolColumnValue(v bool) ColumnValue

NewBoolColumnValue 从布尔值v生成布尔列值

func NewBytesColumnValue

func NewBytesColumnValue(v []byte) ColumnValue

NewBytesColumnValue 从字节流v 生成字节流列值,做拷贝

func NewBytesColumnValueNoCopy

func NewBytesColumnValueNoCopy(v []byte) ColumnValue

NewBytesColumnValueNoCopy 从字节流v 生成字节流列值,不做拷贝

func NewBytesColumnValueWithEncoder

func NewBytesColumnValueWithEncoder(v []byte, e TimeEncoder) ColumnValue

NewBytesColumnValueWithEncoder 从字节流v 和时间编码器e 生成字节流列值,做拷贝

func NewBytesColumnValueWithEncoderNoCopy

func NewBytesColumnValueWithEncoderNoCopy(v []byte, e TimeEncoder) ColumnValue

NewBytesColumnValueWithEncoderNoCopy 从字节流v 和时间编码器e,不做拷贝

func NewDecimalColumnValue

func NewDecimalColumnValue(d decimal.Decimal) ColumnValue

NewDecimalColumnValue 根据高精度实数 d生成高精度实数列值

func NewDecimalColumnValueFromFloat

func NewDecimalColumnValueFromFloat(f float64) ColumnValue

NewDecimalColumnValueFromFloat 根据float64 f生成高精度实数列值

func NewDecimalColumnValueFromString

func NewDecimalColumnValueFromString(s string) (ColumnValue, error)

NewDecimalColumnValueFromString 根据字符串s生成高精度实数列值 不是数值型或者科学计数法的字符串,就会报错

func NewNilBigIntColumnValue

func NewNilBigIntColumnValue() ColumnValue

NewNilBigIntColumnValue 创建空值整数列值

func NewNilBoolColumnValue

func NewNilBoolColumnValue() ColumnValue

NewNilBoolColumnValue 生成空值布尔列值

func NewNilBytesColumnValue

func NewNilBytesColumnValue() ColumnValue

NewNilBytesColumnValue 创建空值字节流列值

func NewNilDecimalColumnValue

func NewNilDecimalColumnValue() ColumnValue

NewNilDecimalColumnValue 生成空值高精度实数型列值

func NewNilStringColumnValue

func NewNilStringColumnValue() ColumnValue

NewNilStringColumnValue 创建空值字符串列值

func NewNilTimeColumnValue

func NewNilTimeColumnValue() ColumnValue

NewNilTimeColumnValue 创建空值时间列值

func NewStringColumnValue

func NewStringColumnValue(s string) ColumnValue

NewStringColumnValue 根据字符串s 生成字符串列值

func NewStringColumnValueWithEncoder

func NewStringColumnValueWithEncoder(s string, e TimeEncoder) ColumnValue

NewStringColumnValueWithEncoder 根据字符串s 时间编码器e生成字符串列值

func NewTimeColumnValue

func NewTimeColumnValue(t time.Time) ColumnValue

NewTimeColumnValue 根据时间t获得时间列值

func NewTimeColumnValueWithDecoder

func NewTimeColumnValueWithDecoder(t time.Time, d TimeDecoder) ColumnValue

NewTimeColumnValueWithDecoder 根据时间t和时间解码器t获得时间列值

type ColumnValueClonable

type ColumnValueClonable interface {
	Clone() ColumnValue //克隆
}

ColumnValueClonable 可克隆列值

type ColumnValueComparabale

type ColumnValueComparabale interface {
	//比较 1代表大于, 0代表相等, -1代表小于
	Cmp(ColumnValue) (int, error)
}

ColumnValueComparabale 可比较列值

type Converter

type Converter struct{}

Converter 数字转化器

func (*Converter) ConvertBigInt

func (c *Converter) ConvertBigInt(s string) (num BigIntNumber, err error)

ConvertBigInt 把字符串转化成整数

func (*Converter) ConvertBigIntFromInt

func (c *Converter) ConvertBigIntFromInt(i int64) (num BigIntNumber)

ConvertBigIntFromInt 转化成实数

func (*Converter) ConvertDecimal

func (c *Converter) ConvertDecimal(s string) (num DecimalNumber, err error)

ConvertDecimal 把字符串转化成实数

func (*Converter) ConvertDecimalFromFloat

func (c *Converter) ConvertDecimalFromFloat(f float64) (num DecimalNumber)

ConvertDecimalFromFloat 转化成实数

type Decimal

type Decimal struct {
	// contains filtered or unexported fields
}

Decimal 高精度实数

func (*Decimal) AsDecimal

func (d *Decimal) AsDecimal() decimal.Decimal

AsDecimal 转化为高精度精度

func (*Decimal) BigInt

func (d *Decimal) BigInt() BigIntNumber

BigInt 转化为高精度整数

func (*Decimal) Bool

func (d *Decimal) Bool() (bool, error)

Bool 转化为布尔

func (*Decimal) CloneDecimal

func (d *Decimal) CloneDecimal() DecimalNumber

CloneDecimal 克隆高精度实数

func (*Decimal) Decimal

func (d *Decimal) Decimal() DecimalNumber

Decimal 转化为高精度实数

func (*Decimal) Float64

func (d *Decimal) Float64() (float64, error)

Float64 转化为64位实数

func (*Decimal) String

func (d *Decimal) String() string

Decimal 转化为字符串

type DecimalColumnValue

type DecimalColumnValue struct {
	// contains filtered or unexported fields
}

DecimalColumnValue 高精度实数列值

func (*DecimalColumnValue) AsBigInt

func (d *DecimalColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 对高精度实数取整,如123.67转化为123 123.12转化为123

func (*DecimalColumnValue) AsBool

func (d *DecimalColumnValue) AsBool() (bool, error)

AsBool 非0转化为true, 0转化为false

func (*DecimalColumnValue) AsBytes

func (d *DecimalColumnValue) AsBytes() ([]byte, error)

AsBytes 转化为字节流, 如10.123 转化为10.123

func (*DecimalColumnValue) AsDecimal

func (d *DecimalColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 转化为高精度实数

func (*DecimalColumnValue) AsString

func (d *DecimalColumnValue) AsString() (string, error)

AsString 转化为字符串, 如10.123 转化为10.123

func (*DecimalColumnValue) AsTime

func (d *DecimalColumnValue) AsTime() (time.Time, error)

AsTime 目前无法转化为时间

func (*DecimalColumnValue) Clone

func (d *DecimalColumnValue) Clone() ColumnValue

Clone 克隆高精度实数列值

func (*DecimalColumnValue) Cmp

func (d *DecimalColumnValue) Cmp(right ColumnValue) (int, error)

Cmp 返回1代表大于, 0代表相等, -1代表小于

func (*DecimalColumnValue) IsNil

func (n *DecimalColumnValue) IsNil() bool

IsNil 是否为空

func (*DecimalColumnValue) String

func (d *DecimalColumnValue) String() string

func (*DecimalColumnValue) Type

func (d *DecimalColumnValue) Type() ColumnType

Type 列类型

type DecimalNumber

type DecimalNumber interface {
	Number

	Float64() (float64, error)
	BigInt() BigIntNumber
	CloneDecimal() DecimalNumber
	AsDecimal() decimal.Decimal
}

DecimalNumber 高精度实数

type DecimalStr

type DecimalStr struct {
	// contains filtered or unexported fields
}

DecimalStr 高精度实数

func (*DecimalStr) AsDecimal

func (d *DecimalStr) AsDecimal() decimal.Decimal

AsDecimal 转化为高精度精度

func (*DecimalStr) BigInt

func (d *DecimalStr) BigInt() BigIntNumber

BigInt 转化为高精度整数

func (*DecimalStr) Bool

func (d *DecimalStr) Bool() (bool, error)

Bool 转化为布尔

func (*DecimalStr) CloneDecimal

func (d *DecimalStr) CloneDecimal() DecimalNumber

CloneDecimal 克隆高精度实数

func (*DecimalStr) Decimal

func (d *DecimalStr) Decimal() DecimalNumber

Decimal 转化为高精度实数

func (*DecimalStr) Float64

func (d *DecimalStr) Float64() (v float64, err error)

Float64 转化为64位实数

func (*DecimalStr) String

func (d *DecimalStr) String() string

Decimal 转化为字符串

type DefaultColumn

type DefaultColumn struct {
	ColumnValue // 列值
	// contains filtered or unexported fields
}

DefaultColumn 默认值

func (*DefaultColumn) AsFloat64

func (d *DefaultColumn) AsFloat64() (float64, error)

AsFloat64 转化为64位实数

func (*DefaultColumn) AsInt64

func (d *DefaultColumn) AsInt64() (int64, error)

AsInt64 转化为64位整数

func (*DefaultColumn) ByteSize

func (d *DefaultColumn) ByteSize() int64

ByteSize 字节流大小

func (*DefaultColumn) Clone

func (d *DefaultColumn) Clone() (Column, error)

Clone 克隆列,如果不是可克隆列值,就会报错

func (*DefaultColumn) Cmp

func (d *DefaultColumn) Cmp(c Column) (int, error)

Cmp 比较列,如果不是可比较列值,就会报错

func (*DefaultColumn) MemorySize

func (d *DefaultColumn) MemorySize() int64

MemorySize 内存大小

func (*DefaultColumn) Name

func (d *DefaultColumn) Name() string

Name 列名

type DefaultRecord

type DefaultRecord struct {
	// contains filtered or unexported fields
}

DefaultRecord 默认记录

func NewDefaultRecord

func NewDefaultRecord() *DefaultRecord

NewDefaultRecord 创建默认记录

func (*DefaultRecord) Add

func (r *DefaultRecord) Add(c Column) error

Add 新增列c,若列c已经存在,就会报错

func (*DefaultRecord) ByteSize

func (r *DefaultRecord) ByteSize() int64

ByteSize 字节流大小

func (*DefaultRecord) ColumnNumber

func (r *DefaultRecord) ColumnNumber() int

ColumnNumber 列数量

func (*DefaultRecord) GetByIndex

func (r *DefaultRecord) GetByIndex(i int) (Column, error)

GetByIndex 获取第i列,若索引i超出范围或者不存在,就会报错

func (*DefaultRecord) GetByName

func (r *DefaultRecord) GetByName(name string) (Column, error)

GetByName 获取列名为name的列,若列名为name的列不存在,就会报错

func (*DefaultRecord) MemorySize

func (r *DefaultRecord) MemorySize() int64

MemorySize 内存大小

func (*DefaultRecord) Put

func (r *DefaultRecord) Put(c Column) error

Put 设置列,若列名不存在,就会报错

func (*DefaultRecord) Set

func (r *DefaultRecord) Set(i int, c Column) error

Set 设置第i列,若索引i超出范围,就会报错

func (*DefaultRecord) String

func (r *DefaultRecord) String() string

String 空方法

type Float64

type Float64 struct {
	// contains filtered or unexported fields
}

Float64 64位实数

func (*Float64) AsDecimal

func (f *Float64) AsDecimal() decimal.Decimal

AsDecimal 转化为高精度精度

func (*Float64) BigInt

func (f *Float64) BigInt() BigIntNumber

BigInt 转化为高精度整数

func (*Float64) Bool

func (f *Float64) Bool() (bool, error)

Bool 转化为布尔

func (*Float64) CloneDecimal

func (f *Float64) CloneDecimal() DecimalNumber

CloneDecimal 克隆高精度实数

func (*Float64) Decimal

func (f *Float64) Decimal() DecimalNumber

Decimal 转化为高精度实数

func (*Float64) Float64

func (f *Float64) Float64() (float64, error)

Float64 转化为64位实数

func (*Float64) String

func (f *Float64) String() string

Decimal 转化为字符串

type Int64

type Int64 struct {
	// contains filtered or unexported fields
}

Int64 64位整数

func (*Int64) AsBigInt

func (i *Int64) AsBigInt() *big.Int

AsBigInt 转化为高精度整数

func (*Int64) AsDecimal

func (i *Int64) AsDecimal() decimal.Decimal

AsDecimal 转化为高精度精度

func (*Int64) BigInt

func (i *Int64) BigInt() BigIntNumber

BigInt 转化为高精度整数

func (*Int64) Bool

func (i *Int64) Bool() (bool, error)

Bool 转化为布尔值

func (*Int64) CloneBigInt

func (i *Int64) CloneBigInt() BigIntNumber

CloneBigInt 克隆高精度整数

func (*Int64) CloneDecimal

func (i *Int64) CloneDecimal() DecimalNumber

CloneDecimal 克隆高精度实数

func (*Int64) Decimal

func (i *Int64) Decimal() DecimalNumber

Decimal 转化为高精度实数

func (*Int64) Float64

func (i *Int64) Float64() (float64, error)

Float64 转化为64位实数

func (*Int64) Int64

func (i *Int64) Int64() (int64, error)

Int64 转化为64位整数

func (*Int64) String

func (i *Int64) String() string

Decimal 转化为字符串

type NilBigIntColumnValue

type NilBigIntColumnValue struct {
	// contains filtered or unexported fields
}

NilBigIntColumnValue 空值整数列值

func (NilBigIntColumnValue) AsBigInt

func (n NilBigIntColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 无法转化整数

func (NilBigIntColumnValue) AsBool

func (n NilBigIntColumnValue) AsBool() (bool, error)

AsBool 无法转化布尔值

func (NilBigIntColumnValue) AsBytes

func (n NilBigIntColumnValue) AsBytes() ([]byte, error)

AsBytes 无法转化字节流

func (NilBigIntColumnValue) AsDecimal

func (n NilBigIntColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 无法转化高精度实数

func (NilBigIntColumnValue) AsString

func (n NilBigIntColumnValue) AsString() (string, error)

AsString 无法转化字符串

func (NilBigIntColumnValue) AsTime

func (n NilBigIntColumnValue) AsTime() (time.Time, error)

AsTime 无法转化时间

func (*NilBigIntColumnValue) Clone

func (n *NilBigIntColumnValue) Clone() ColumnValue

Clone 克隆空值整数列值

func (NilBigIntColumnValue) IsNil

func (n NilBigIntColumnValue) IsNil() bool

IsNil 是否为空

func (NilBigIntColumnValue) String

func (n NilBigIntColumnValue) String() string

String 打印显示

func (*NilBigIntColumnValue) Type

func (n *NilBigIntColumnValue) Type() ColumnType

Type 返回列类型

type NilBoolColumnValue

type NilBoolColumnValue struct {
	// contains filtered or unexported fields
}

NilBoolColumnValue 空值布尔列值

func (NilBoolColumnValue) AsBigInt

func (n NilBoolColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 无法转化整数

func (NilBoolColumnValue) AsBool

func (n NilBoolColumnValue) AsBool() (bool, error)

AsBool 无法转化布尔值

func (NilBoolColumnValue) AsBytes

func (n NilBoolColumnValue) AsBytes() ([]byte, error)

AsBytes 无法转化字节流

func (NilBoolColumnValue) AsDecimal

func (n NilBoolColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 无法转化高精度实数

func (NilBoolColumnValue) AsString

func (n NilBoolColumnValue) AsString() (string, error)

AsString 无法转化字符串

func (NilBoolColumnValue) AsTime

func (n NilBoolColumnValue) AsTime() (time.Time, error)

AsTime 无法转化时间

func (*NilBoolColumnValue) Clone

func (n *NilBoolColumnValue) Clone() ColumnValue

Clone 克隆空值布尔列值

func (NilBoolColumnValue) IsNil

func (n NilBoolColumnValue) IsNil() bool

IsNil 是否为空

func (NilBoolColumnValue) String

func (n NilBoolColumnValue) String() string

String 打印显示

func (*NilBoolColumnValue) Type

func (n *NilBoolColumnValue) Type() ColumnType

Type 返回列类型

type NilBytesColumnValue

type NilBytesColumnValue struct {
	// contains filtered or unexported fields
}

NilBytesColumnValue 空值字节流列值

func (NilBytesColumnValue) AsBigInt

func (n NilBytesColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 无法转化整数

func (NilBytesColumnValue) AsBool

func (n NilBytesColumnValue) AsBool() (bool, error)

AsBool 无法转化布尔值

func (NilBytesColumnValue) AsBytes

func (n NilBytesColumnValue) AsBytes() ([]byte, error)

AsBytes 无法转化字节流

func (NilBytesColumnValue) AsDecimal

func (n NilBytesColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 无法转化高精度实数

func (NilBytesColumnValue) AsString

func (n NilBytesColumnValue) AsString() (string, error)

AsString 无法转化字符串

func (NilBytesColumnValue) AsTime

func (n NilBytesColumnValue) AsTime() (time.Time, error)

AsTime 无法转化时间

func (*NilBytesColumnValue) Clone

func (n *NilBytesColumnValue) Clone() ColumnValue

Clone 克隆空值字节流列值

func (NilBytesColumnValue) IsNil

func (n NilBytesColumnValue) IsNil() bool

IsNil 是否为空

func (NilBytesColumnValue) String

func (n NilBytesColumnValue) String() string

String 打印显示

func (*NilBytesColumnValue) Type

func (n *NilBytesColumnValue) Type() ColumnType

Type 返回列类型

type NilDecimalColumnValue

type NilDecimalColumnValue struct {
	// contains filtered or unexported fields
}

NilDecimalColumnValue 空值高精度实数型列值

func (NilDecimalColumnValue) AsBigInt

func (n NilDecimalColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 无法转化整数

func (NilDecimalColumnValue) AsBool

func (n NilDecimalColumnValue) AsBool() (bool, error)

AsBool 无法转化布尔值

func (NilDecimalColumnValue) AsBytes

func (n NilDecimalColumnValue) AsBytes() ([]byte, error)

AsBytes 无法转化字节流

func (NilDecimalColumnValue) AsDecimal

func (n NilDecimalColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 无法转化高精度实数

func (NilDecimalColumnValue) AsString

func (n NilDecimalColumnValue) AsString() (string, error)

AsString 无法转化字符串

func (NilDecimalColumnValue) AsTime

func (n NilDecimalColumnValue) AsTime() (time.Time, error)

AsTime 无法转化时间

func (*NilDecimalColumnValue) Clone

Clone 克隆

func (NilDecimalColumnValue) IsNil

func (n NilDecimalColumnValue) IsNil() bool

IsNil 是否为空

func (NilDecimalColumnValue) String

func (n NilDecimalColumnValue) String() string

String 打印显示

func (*NilDecimalColumnValue) Type

Type 列类型

type NilStringColumnValue

type NilStringColumnValue struct {
	// contains filtered or unexported fields
}

NilStringColumnValue 空值字符串列值

func (NilStringColumnValue) AsBigInt

func (n NilStringColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 无法转化整数

func (NilStringColumnValue) AsBool

func (n NilStringColumnValue) AsBool() (bool, error)

AsBool 无法转化布尔值

func (NilStringColumnValue) AsBytes

func (n NilStringColumnValue) AsBytes() ([]byte, error)

AsBytes 无法转化字节流

func (NilStringColumnValue) AsDecimal

func (n NilStringColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 无法转化高精度实数

func (NilStringColumnValue) AsString

func (n NilStringColumnValue) AsString() (string, error)

AsString 无法转化字符串

func (NilStringColumnValue) AsTime

func (n NilStringColumnValue) AsTime() (time.Time, error)

AsTime 无法转化时间

func (*NilStringColumnValue) Clone

func (n *NilStringColumnValue) Clone() ColumnValue

Clone 克隆空值字符串

func (NilStringColumnValue) IsNil

func (n NilStringColumnValue) IsNil() bool

IsNil 是否为空

func (NilStringColumnValue) String

func (n NilStringColumnValue) String() string

String 打印显示

func (*NilStringColumnValue) Type

func (n *NilStringColumnValue) Type() ColumnType

Type 列类型

type NilTimeColumnValue

type NilTimeColumnValue struct {
	// contains filtered or unexported fields
}

NilTimeColumnValue 空值时间列值

func (NilTimeColumnValue) AsBigInt

func (n NilTimeColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 无法转化整数

func (NilTimeColumnValue) AsBool

func (n NilTimeColumnValue) AsBool() (bool, error)

AsBool 无法转化布尔值

func (NilTimeColumnValue) AsBytes

func (n NilTimeColumnValue) AsBytes() ([]byte, error)

AsBytes 无法转化字节流

func (NilTimeColumnValue) AsDecimal

func (n NilTimeColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 无法转化高精度实数

func (NilTimeColumnValue) AsString

func (n NilTimeColumnValue) AsString() (string, error)

AsString 无法转化字符串

func (NilTimeColumnValue) AsTime

func (n NilTimeColumnValue) AsTime() (time.Time, error)

AsTime 无法转化时间

func (*NilTimeColumnValue) Clone

func (n *NilTimeColumnValue) Clone() ColumnValue

Clone 克隆空值时间列值

func (NilTimeColumnValue) IsNil

func (n NilTimeColumnValue) IsNil() bool

IsNil 是否为空

func (NilTimeColumnValue) String

func (n NilTimeColumnValue) String() string

String 打印显示

func (*NilTimeColumnValue) Type

func (n *NilTimeColumnValue) Type() ColumnType

Type 列类型

type Number

type Number interface {
	Bool() (bool, error)
	String() string
}

Number 数字

type NumberConverter

type NumberConverter interface {
	ConvertBigIntFromInt(i int64) (num BigIntNumber)
	ConvertDecimalFromFloat(f float64) (num DecimalNumber)
	ConvertBigInt(s string) (num BigIntNumber, err error)
	ConvertDecimal(s string) (num DecimalNumber, err error)
}

NumberConverter 数字转化器

type OldConverter

type OldConverter struct{}

OldConverter 无检查转化

func (*OldConverter) ConvertBigInt

func (c *OldConverter) ConvertBigInt(s string) (num BigIntNumber, err error)

ConvertBigInt 把字符串转化成整数

func (*OldConverter) ConvertBigIntFromInt

func (c *OldConverter) ConvertBigIntFromInt(i int64) (num BigIntNumber)

ConvertBigIntFromInt 转化成实数

func (*OldConverter) ConvertDecimal

func (c *OldConverter) ConvertDecimal(s string) (num DecimalNumber, err error)

ConvertDecimal 把字符串转化成实数

func (*OldConverter) ConvertDecimalFromFloat

func (c *OldConverter) ConvertDecimalFromFloat(f float64) (num DecimalNumber)

ConvertDecimalFromFloat 转化成实数

type Record

type Record interface {
	fmt.Stringer

	Add(Column) error                      //新增列
	GetByIndex(i int) (Column, error)      //获取第i个列
	GetByName(name string) (Column, error) //获取列名为name的列
	Set(i int, c Column) error             //设置第i列
	Put(c Column) error                    //设置对应列
	ColumnNumber() int                     //获取列数
	ByteSize() int64                       //字节流大小
	MemorySize() int64                     //内存大小
}

Record 记录

func GetTerminateRecord

func GetTerminateRecord() Record

GetTerminateRecord 获取终止记录

type RecordChan

type RecordChan struct {
	// contains filtered or unexported fields
}

RecordChan 记录通道 修复内存溢出

func NewRecordChan

func NewRecordChan(ctx context.Context) *RecordChan

NewRecordChan 创建记录通道

func NewRecordChanBuffer

func NewRecordChanBuffer(ctx context.Context, n int) *RecordChan

NewRecordChanBuffer 创建容量n的记录通道

func (*RecordChan) Buffered

func (c *RecordChan) Buffered() int

Buffered 记录通道内的元素数量

func (*RecordChan) Close

func (c *RecordChan) Close()

Close 关闭

func (*RecordChan) PopFront

func (c *RecordChan) PopFront() (r Record, ok bool)

PopFront 在头部弹出记录r,并且返回是否还有值

func (*RecordChan) PopFrontAll

func (c *RecordChan) PopFrontAll(onRecord func(Record) error) error

PopFrontAll 通过函数onRecord从头部弹出所有记录

func (*RecordChan) PushBack

func (c *RecordChan) PushBack(r Record) int

PushBack 在尾部追加记录r,并且返回队列大小

func (*RecordChan) PushBackAll

func (c *RecordChan) PushBackAll(fetchRecord func() (Record, error)) error

PushBackAll 通过函数fetchRecord获取多个记录,在尾部追加

type SetError

type SetError struct {
	// contains filtered or unexported fields
}

SetError 设置错误

func NewSetError

func NewSetError(i interface{}, other ColumnType, err error) *SetError

NewSetError 通过值i设置成累心other类型的错误err生成设置错误

func (*SetError) Error

func (e *SetError) Error() string

func (*SetError) Unwrap

func (e *SetError) Unwrap() error

type StringColumnValue

type StringColumnValue struct {
	TimeEncoder
	// contains filtered or unexported fields
}

StringColumnValue 字符串列名 注意:Decimal 123.0(val:1230,exp:-1)和123(val:123,exp:0)不一致

func (*StringColumnValue) AsBigInt

func (s *StringColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 转化为整数,实数型以及科学性计数法字符串会被取整,不是数值型的会报错 如123.67转化为123 123.12转化为123

func (*StringColumnValue) AsBool

func (s *StringColumnValue) AsBool() (v bool, err error)

AsBool 1, t, T, TRUE, true, True转化为true 0, f, F, FALSE, false, False转化为false,如果不是上述情况会报错

func (*StringColumnValue) AsBytes

func (s *StringColumnValue) AsBytes() ([]byte, error)

AsBytes 转化成字节流

func (*StringColumnValue) AsDecimal

func (s *StringColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 转化为整数,实数型以及科学性计数法字符串能够转化,不是数值型的会报错

func (*StringColumnValue) AsString

func (s *StringColumnValue) AsString() (string, error)

AsString 转化为字符串

func (*StringColumnValue) AsTime

func (s *StringColumnValue) AsTime() (t time.Time, err error)

AsTime 根据时间编码器转化成时间,不符合时间编码器格式会报错

func (*StringColumnValue) Clone

func (s *StringColumnValue) Clone() ColumnValue

Clone 克隆字符串列值

func (*StringColumnValue) Cmp

func (s *StringColumnValue) Cmp(right ColumnValue) (int, error)

Cmp 返回1代表大于, 0代表相等, -1代表小于

func (*StringColumnValue) IsNil

func (n *StringColumnValue) IsNil() bool

IsNil 是否为空

func (*StringColumnValue) String

func (s *StringColumnValue) String() string

func (*StringColumnValue) Type

func (s *StringColumnValue) Type() ColumnType

Type 列类型

type StringTimeDecoder

type StringTimeDecoder struct {
	// contains filtered or unexported fields
}

StringTimeDecoder 字符串时间编码器

func (*StringTimeDecoder) Layout added in v0.1.1

func (d *StringTimeDecoder) Layout() string

Layout 时间格式

func (*StringTimeDecoder) TimeDecode

func (d *StringTimeDecoder) TimeDecode(t time.Time) (interface{}, error)

TimeDecode 根据go时间格式layout的字符串时间编码成string

type StringTimeEncoder

type StringTimeEncoder struct {
	// contains filtered or unexported fields
}

StringTimeEncoder 字符串时间编码器

func (*StringTimeEncoder) TimeEncode

func (e *StringTimeEncoder) TimeEncode(i interface{}) (time.Time, error)

TimeEncode 编码成时间,若i不是string或者不是layout格式,会报错

type TerminateRecord

type TerminateRecord struct{}

TerminateRecord 终止记录

func (*TerminateRecord) Add

func (t *TerminateRecord) Add(Column) error

Add 空方法

func (*TerminateRecord) ByteSize

func (t *TerminateRecord) ByteSize() int64

ByteSize 空方法

func (*TerminateRecord) ColumnNumber

func (t *TerminateRecord) ColumnNumber() int

ColumnNumber 空方法

func (*TerminateRecord) GetByIndex

func (t *TerminateRecord) GetByIndex(i int) (Column, error)

GetByIndex 空方法

func (*TerminateRecord) GetByName

func (t *TerminateRecord) GetByName(name string) (Column, error)

GetByName 空方法

func (*TerminateRecord) MemorySize

func (t *TerminateRecord) MemorySize() int64

MemorySize 空方法

func (*TerminateRecord) Put

func (t *TerminateRecord) Put(c Column) error

Put 空方法

func (*TerminateRecord) Set

func (t *TerminateRecord) Set(i int, c Column) error

Set 空方法

func (*TerminateRecord) String

func (t *TerminateRecord) String() string

String 空方法

type TimeColumnValue

type TimeColumnValue struct {
	TimeDecoder //时间解码器
	// contains filtered or unexported fields
}

TimeColumnValue 时间列值

func (*TimeColumnValue) AsBigInt

func (t *TimeColumnValue) AsBigInt() (BigIntNumber, error)

AsBigInt 无法转化整数

func (*TimeColumnValue) AsBool

func (t *TimeColumnValue) AsBool() (bool, error)

AsBool 无法转化布尔值

func (*TimeColumnValue) AsBytes

func (t *TimeColumnValue) AsBytes() (b []byte, err error)

AsBytes 变为字节流

func (*TimeColumnValue) AsDecimal

func (t *TimeColumnValue) AsDecimal() (DecimalNumber, error)

AsDecimal 无法转化高精度实数

func (*TimeColumnValue) AsString

func (t *TimeColumnValue) AsString() (s string, err error)

AsString 变为字符串

func (*TimeColumnValue) AsTime

func (t *TimeColumnValue) AsTime() (time.Time, error)

AsTime 变为时间

func (*TimeColumnValue) Clone

func (t *TimeColumnValue) Clone() ColumnValue

Clone 克隆时间列值

func (*TimeColumnValue) Cmp

func (t *TimeColumnValue) Cmp(right ColumnValue) (int, error)

Cmp 返回1代表大于, 0代表相等, -1代表小于

func (*TimeColumnValue) IsNil

func (n *TimeColumnValue) IsNil() bool

IsNil 是否为空

func (*TimeColumnValue) String

func (t *TimeColumnValue) String() string

func (*TimeColumnValue) Type

func (t *TimeColumnValue) Type() ColumnType

Type 列类型

type TimeDecoder

type TimeDecoder interface {
	TimeDecode(t time.Time) (interface{}, error)
	Layout() string
}

TimeDecoder 时间解码器

func NewStringTimeDecoder

func NewStringTimeDecoder(layout string) TimeDecoder

NewStringTimeDecoder 根据go时间格式layout的字符串时间编码器

type TimeEncoder

type TimeEncoder interface {
	TimeEncode(i interface{}) (time.Time, error)
}

TimeEncoder 时间编码器

func NewStringTimeEncoder

func NewStringTimeEncoder(layout string) TimeEncoder

NewStringTimeEncoder 根据go时间格式layout的字符串时间编码器

type TransformError

type TransformError struct {
	// contains filtered or unexported fields
}

TransformError 转化错误

func NewTransformError

func NewTransformError(msg string, err error) *TransformError

NewTransformError 根据消息msg和错误err生成转化错误

func NewTransformErrorFormColumnTypes

func NewTransformErrorFormColumnTypes(one, other ColumnType, err error) *TransformError

NewTransformErrorFormColumnTypes 从one类型到other类型转化错误err生成转化错误

func NewTransformErrorFormString

func NewTransformErrorFormString(one, other string, err error) *TransformError

NewTransformErrorFormString 从one到other转化错误err生成转化错误

func (*TransformError) Error

func (e *TransformError) Error() string

func (*TransformError) Unwrap

func (e *TransformError) Unwrap() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL