Skip to content

Latest commit

 

History

History
45 lines (34 loc) · 1.08 KB

File metadata and controls

45 lines (34 loc) · 1.08 KB

Structx (结构体扩展)

提供结构体转换与比较工具。

API

StructConvert

  • 签名: func StructConvert[S any, T any](source *S, target *T) error
  • 描述: 通过 JSON 序列化/反序列化实现结构体之间的转换。
  • 警告: 性能较低,仅适用于非关键路径。建议高性能场景使用专门的转换库。

DiffStruct

  • 签名: func DiffStruct[O any, N any](old O, new N, ignore []string) map[string]interface{}
  • 描述: 比较两个结构体,返回发生变更的字段名及其新值。支持忽略指定字段。

示例

import (
    "fmt"
    "github.com/fireflycore/go-utils/structx"
)

type User struct {
    Name string
    Age  int
}

func main() {
    // StructConvert
    u1 := User{Name: "Alice", Age: 30}
    var u2 User
    if err := structx.StructConvert(&u1, &u2); err != nil {
        panic(err)
    }
    
    // DiffStruct
    oldUser := User{Name: "Bob", Age: 20}
    newUser := User{Name: "Bob", Age: 21}
    diff := structx.DiffStruct(oldUser, newUser, nil)
    fmt.Println(diff) // map[Age:21]
}