package
module
Version:
v0.0.0-...-a233b49
Opens a new window with list of versions in this module.
Published: Mar 16, 2025
License: MIT
Opens a new window with license information.
Imports: 21
Opens a new window with list of imports.
Imported by: 1
Opens a new window with list of known importers.
README
¶
prototype
prototype 是一个用户克隆Go语言里任何变量的工具。
安装
go get -u github.com/go-leo/prototype
bool类型
| 源 |
目标 |
说明 |
| bool |
bool |
类型相同,直接复制 |
| bool |
any |
底层也是bool,直接复制 |
| bool |
string |
strconv.FormatBool 转成字符串 |
| bool |
int |
true:1, false:0 |
| bool |
uint |
true:1, false:0 |
| bool |
float |
true:1, false:0 |
| bool |
pointer |
解引用后再复制 |
| bool |
struct |
sql.NullXXX、wrapperspb.XXXValue、structpb.Value、anypb.Any,底层还是基础类型,同上 |
| bool |
ClonerFrom |
自定义克隆 |
int类型
| 源 |
目标 |
说明 |
| int |
int |
类型相同,直接复制 |
| int |
any |
底层也是int,直接复制 |
| int |
uint |
类型转化 |
| int |
float |
类型转化 |
| int |
bool |
0:false, !0:true |
| int |
string |
strconv.FormatInt 转成字符串 |
| int |
pointer |
解引用后再复制 |
| int |
struct |
sql.NullXXX、wrapperspb.XXXValue、structpb.Value、anypb.Any,底层还是基础类型,同上 |
| int |
ClonerFrom |
自定义克隆 |
uint类型
| 源 |
目标 |
说明 |
| uint |
uint |
类型相同,直接复制 |
| uint |
any |
底层也是uint,直接复制 |
| uint |
int |
类型转化 |
| uint |
float |
类型转化 |
| uint |
bool |
0:false, !0:true |
| uint |
string |
strconv.FormatIUint 转成字符串 |
| uint |
pointer |
解引用后再复制 |
| uint |
struct |
sql.NullXXX、wrapperspb.XXXValue、structpb.Value、anypb.Any,底层还是基础类型,同上 |
| uint |
ClonerFrom |
自定义克隆 |
float类型
| 源 |
目标 |
说明 |
| float |
float |
类型相同,直接复制 |
| float |
any |
底层也是float,直接复制 |
| float |
uint |
类型转化 |
| float |
int |
类型转化 |
| float |
bool |
0:false, !0:true |
| float |
string |
strconv.FormatFloat 转成字符串 |
| float |
pointer |
解引用后再复制 |
| float |
struct |
sql.NullXXX、wrapperspb.XXXValue、structpb.Value、anypb.Any,底层还是基础类型,同上 |
| float |
ClonerFrom |
自定义克隆 |
string类型
| 源 |
目标 |
说明 |
| string |
string |
类型相同,直接复制 |
| string |
any |
底层也是string,直接复制 |
| string |
[]byte |
类型转化 |
| string |
[]rune |
类型转化 |
| string |
int |
strconv.ParseInt |
| string |
uint |
strconv.ParseUint |
| string |
float |
strconv.ParseFloat |
| string |
bool |
strconv.ParseBool |
| string |
pointer |
解引用后再复制 |
| string |
struct |
sql.NullXXX、wrapperspb.XXXValue、structpb.Value、anypb.Any,底层还是基础类型,同上 |
| string |
ClonerFrom |
自定义克隆 |
[]byte类型
| 源 |
目标 |
说明 |
| []byte |
[]byte |
类型相同,直接复制 |
| []byte |
string |
类型相同,直接复制 |
| []byte |
any |
base64后再转 |
| []byte |
int |
先转出string,然后在转 |
| []byte |
uint |
先转出string,然后在转 |
| []byte |
float |
先转出string,然后在转 |
| []byte |
bool |
先转出string,然后在转 |
| []byte |
pointer |
解引用后再复制 |
| []byte |
struct |
sql.NullXXX、wrapperspb.XXXValue、structpb.Value、anypb.Any,底层还是基础类型,同上 |
| []byte |
ClonerFrom |
自定义克隆 |
time.Time类型
| 源 |
目标 |
说明 |
| time.Time |
time.Time |
类型相同,直接复制 |
| time.Time |
struct |
sql.NullXXX、wrapperspb.XXXValue、structpb.Value、anypb.Any,底层还是一样,同上 |
| time.Time |
string |
TimeToString 函数转成string |
| time.Time |
[]byte |
TimeToString 函数转成string,在转[]byte |
| time.Time |
any |
还是time.Time,类型相同,直接复制 |
| time.Time |
int |
TimeToInt转成int,然后在转 |
| time.Time |
uint |
TimeToInt转成int,然后在转 |
| time.Time |
float |
TimeToInt转成int,然后在转 |
| time.Time |
pointer |
解引用后再复制 |
| time.Time |
ClonerFrom |
自定义克隆 |
slice类型
| 源 |
目标 |
说明 |
| []byte |
x |
走 bytes克隆 |
| slice |
any |
底层还是slice,类型相同,直接复制 |
| slice |
slice |
元素类型转化,然后转成slice |
| slice |
array |
元素类型转化,然后转成array |
| slice |
pointer |
解引用后再复制 |
| slice |
ClonerFrom |
自定义克隆 |
array类型
| 源 |
目标 |
说明 |
| array |
array |
元素类型转化,然后转成array |
| array |
slice |
元素类型转化,然后转成slice |
| array |
any |
底层还是slice,类型相同,直接复制 |
| array |
pointer |
解引用后再复制 |
| array |
ClonerFrom |
自定义克隆 |
map类型
| 源 |
目标 |
说明 |
| map |
map |
key和value类型转化,然后转成map |
| array |
any |
底层一样,类型相同,直接复制 |
| array |
struct |
按key找到字段,根据字段类型然后复制 |
| array |
pointer |
解引用后再复制 |
| array |
ClonerFrom |
自定义克隆 |
struct 类型
| 源 |
目标 |
说明 |
| sql.XXX |
X |
底层类型复制 |
| wrapperspb.XXX |
X |
底层类型复制 |
| anypb.Any |
X |
接触原类型然后复制 |
| array |
pointer |
解引用后再复制 |
| array |
ClonerFrom |
自定义克隆 |
pointer类型
| 克隆类型 |
目标 |
说明 |
| 浅克隆,并且类型相同 |
X |
指针赋值 |
| 深克隆或者类型不同 |
X |
追溯到非指针类型在复制 |
interface类型
| 源 |
目标 |
说明 |
| ClonerTo |
X |
自定义克隆 |
| 其他接口 |
X |
追溯到非接口类型在复制 |
Documentation
¶
View Source
const (
NonPointer Code = 1
Nil = 2
Overflow = 3
NegativeNumber = 4
FailedParse = 5
PointerCycle = 6
UnsupportedType = 7
FailedUnmarshalNew = 9
FailedStringify = 10
FailedSetEmbeddedPointer = 11
)
type ClonerFrom interface {
CloneFrom(src any) (bool, error)
}
ClonerFrom 自定义克隆方法,从源克隆到自己
ClonerTo 自定义克隆方法,将自己克隆到目标
type Option func(o *options)
func DisableDeepClone() Option
func InterruptOnError() Option
Source Files
¶
Directories
¶
cmd
|
|
|
|
|
|
|
|
Click to show internal directories.
Click to hide internal directories.