struct_tool

package
v1.0.20 Latest Latest
Warning

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

Go to latest
Published: Jan 10, 2025 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetStringFromObj

func GetStringFromObj(obj interface{}) (keyString string)

GetStringFromObj obj为结构体实例 与test_tool中的GetSubTestName类似 返回值格式:keyName_keyValueString_keyName_keyValueString

func SetUpdateValue

func SetUpdateValue(originObjPtr, updateInfoObjPtr interface{}) (changed bool, originMap, changedMap map[string]interface{})

SetUpdateValue 将updateInfoObj这个结构体实例中的各项更新至originObj中各同名项中。 1. updateInfoObj 中的各项如果不是零值,且与originObj中的对应项值不同,才会更新至originObj 2. originObjPtr 是 originObj的指针;updateInfoObjPtr 是 updateInfoObj的指针 updateInfoObj中的各项如果不是zero value,则将originObj中同名的项的值更新 ! 注意:如果updateInfoObj中有些项刻意置为零值,在这里不会改变,需要额外单独赋值给originObj相应的项。例如,将state置为0,或将某字段置空“” changed: 表示原始值与info中有不同的值 originMap: 如果changed == true,orginMap中列出变动前的项和原始值 changedMap: 如果changed == true,changedMap中列出后的项和值 deprecated, 建议使用SetUpdateValueWithOption

func SetUpdateValueWithOption added in v1.0.19

func SetUpdateValueWithOption(originObjPtr, updateInfoObjPtr interface{}, option *SetUpdateValueOption) (changed bool, originMap, changedMap map[string]interface{}, err error)

SetUpdateValueWithOption 将updateInfoObj的值更新到originObj中。 - originObjPtr: 原始对象的指针。 - updateInfoObjPtr: 更新信息的对象指针。 - option: 更新选项。 返回值: - changed: 是否有任何字段被更新。 - originMap: 记录被更新字段的原始值。 - changedMap: 记录被更新字段的更新值。 originObj 和 updateInfoObj 可能是两个不同的struct的instance。这两个struct的field名称可能相同,只有updateInfoObj中的field名称在originObj中存在时,才将会被更新。 允许处理字段类型不一致(值与指针互转)的场景,并根据 CanSetNil 决定是否更新空指针。 场景1: 例如originObj中可能有个Age int, updateInfoObj中可能有Age *int,那么如果后者不是nil,则将后者指针指向的值更新到前者。如果后者是nil,则无值,无论是否设置CanSetNil,都不会将前者设为零值。 场景2: 如果originObj中Age *int, updateInfoObj中Age int,则将后者的值更新至前者。 场景3: 如果orginObj中Age *int, updateInfoObj中 Age *int,则后者的Age指针根据CanSetNil的设置情况决定是否更新到originObj的Age 如果CanSetNil为false,updateInfoObj中的各项目的值除了nil以外都将更新至originObj,nil以外的零值也更新; 如果CanSetNil为true,updateInfoObj中的各项目的值包括nil和其他类型的零值都将更新至originObj ! 所以,将此function用于go-gin bind query或bind json时,将updateInfo struct中的可能会出现零值的field用指针表示,并设置CanSetNil=false,这样能防止未提供的更新项被误更新为零值

Types

type SetUpdateValueOption added in v1.0.19

type SetUpdateValueOption struct {
	// 是否将空指针(nil)更新到originObj中
	CanSetNil bool
}

Jump to

Keyboard shortcuts

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