tool

package
v0.0.0-...-bfc2f26 Latest Latest
Warning

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

Go to latest
Published: Apr 11, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConvertCsvLineToValue

func ConvertCsvLineToValue(valueType reflect.Type, row []string, columnNames []string, option *CsvOption) reflect.Value

func ConvertStringToFieldValue

func ConvertStringToFieldValue(object, fieldVal reflect.Value, columnName, fieldString string, option *CsvOption)

字段赋值,根据字段的类型,把字符串转换成对应的值

func ReadCsvFile

func ReadCsvFile(file string) ([][]string, error)

func ReadCsvFileMap

func ReadCsvFileMap[M ~map[K]V, K IntOrString, V any](file string, m M, option *CsvOption) error

csv数据转换成map V支持proto.Message和普通struct结构

func ReadCsvFileObject

func ReadCsvFileObject[V any](file string, v V, option *CsvOption) error

key-value格式的csv数据给对象赋值 V支持proto.Message和普通struct结构

func ReadCsvFileSlice

func ReadCsvFileSlice[Slice ~[]V, V any](file string, s Slice, option *CsvOption) (Slice, error)

csv数据转换成slice V支持proto.Message和普通struct结构

func ReadCsvFromDataMap

func ReadCsvFromDataMap[M ~map[K]V, K IntOrString, V any](rows [][]string, m M, option *CsvOption) error

csv数据转换成map V支持proto.Message和普通struct结构

func ReadCsvFromDataObject

func ReadCsvFromDataObject[V any](rows [][]string, v V, option *CsvOption) error

key-value格式的csv数据转换成对象 V支持proto.Message和普通struct结构

func ReadCsvFromDataSlice

func ReadCsvFromDataSlice[Slice ~[]V, V any](rows [][]string, s Slice, option *CsvOption) (Slice, error)

csv数据转换成slice V支持proto.Message和普通struct结构

Types

type CsvOption

type CsvOption struct {
	// 数据行索引(>=1)
	DataBeginRowIndex int

	// 数组分隔符
	// 如数组分隔符为;时,则1;2;3可以表示[1,2,3]的数组
	SliceSeparator string

	// Map的分隔符
	// 如MapKVSeparator为_ MapSeparator为;
	// 则a_1;b_2;c_3可以表示{"a":1,"b":2,"c":3}的map
	MapKVSeparator string
	MapSeparator   string
	// contains filtered or unexported fields
}

func (*CsvOption) GetConverterByColumnName

func (co *CsvOption) GetConverterByColumnName(columnName string) FieldConverter

func (*CsvOption) GetConverterByType

func (co *CsvOption) GetConverterByType(typ reflect.Type) FieldConverter

func (*CsvOption) GetConverterByTypePtrOrStruct

func (co *CsvOption) GetConverterByTypePtrOrStruct(typ reflect.Type) (converter FieldConverter, convertToElem bool)

如果typ是Struct,但是注册的FieldConverter是同类型的Ptr,则会返回Ptr类型的FieldConverter,同时convertToElem返回true

func (*CsvOption) RegisterConverterByColumnName

func (co *CsvOption) RegisterConverterByColumnName(columnName string, converter FieldConverter) *CsvOption

注册列名对应的转换接口

func (*CsvOption) RegisterConverterByType

func (co *CsvOption) RegisterConverterByType(typ reflect.Type, converter FieldConverter) *CsvOption

注册类型对应的转换接口

type FieldConverter

type FieldConverter func(obj interface{}, columnName, fieldStr string) interface{}

字段转换接口

type IntOrString

type IntOrString interface {
	~int | ~int8 | ~int16 | ~int32 | ~int64 |
		~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~string
}

Jump to

Keyboard shortcuts

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