copy

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

对结构体数组等数据结构复制的增强 目前仅支持json形式的复制

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidCopyDestination = errors.New("copy target is invalid")
	ErrInvalidCopyFrom        = errors.New("copy source is invalid")
	ErrMapKeyNotMatch         = errors.New("map's key type doesn't match")
	ErrNotSupported           = errors.New("not supported")
)

Functions

func Copy

func Copy(source interface{}, target interface{}) (err error)

复制任意类型数据 参考github.com/jinzhu/copier,不断引入新的tag会导致结构属性tag过长 这里依然使用json的tag来进行赋值 该方法复制不会处理类型不一致的问题,意味着通过json的tar指定类型转换将会被忽略 对于`json:"-"`IgnoreIgnore为false时将不会复制其值,omitempty通过IgnoreEmpty统一开关 对json的tag进行了扩展你可以这样写`json:"vale_name,must"` must会在该字段无法赋值是返回报错

func CopyWithOpt

func CopyWithOpt(source interface{}, target interface{}, opt Option) (err error)

复制任意类型数据 支持自定义操作

func JsonCopy

func JsonCopy(source interface{}, target interface{}) (err error)

复制json类型数据 依据结构的json标签,同样支持数组等数据结构 效率较低,但全量支持json标签的类型转换

func KindType

func KindType(reflectType reflect.Type) (_ reflect.Type, isPtr bool)

返回类型

func KindValue

func KindValue(reflectValue reflect.Value) reflect.Value

返回指针内包含的数据类型

Types

type Option

type Option struct {
	IgnoreIgnore bool //false 形如`json:"-"`将不会被复制
	IgnoreEmpty  bool //0或空将不会被复制
	DeepCopy     bool //深copy
}

Jump to

Keyboard shortcuts

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