小编use*_*257的帖子

如何在 Go 1.18 中访问泛型结构中的共享字段?我收到错误“类型 t 没有字段或方法 DATE_START”

我有两个具有一些相同字段名称和类型的结构:

type JOURNAL_TAG struct {
    DATE_START            time.Time
    DATE_END              time.Time
    ENTRY_NUMBER          uint
    VALUE                 float64
}

type INVENTORY_TAG struct {
    DATE_START   time.Time
    DATE_END     time.Time
    PRICE        float64
    QUANTITY     float64
    ACCOUNT_NAME string
}
Run Code Online (Sandbox Code Playgroud)

我有一个函数可以访问公共字段DATE_START,该字段应该对这些类型的切片进行排序:

func sort_by_time[t JOURNAL_TAG|INVENTORY_TAG](slice []t, is_ascending bool) {
    sort.Slice(slice, func(i, j int) bool {
        return slice[i].DATE_START.After(slice[j].DATE_START) == is_ascending
    })
}
Run Code Online (Sandbox Code Playgroud)

运行go build报编译错误:

slice[i].DATE_START undefined (type t has no field or method DATE_START)
Run Code Online (Sandbox Code Playgroud)

我想使用泛型对这两种类型的切片进行排序,可以吗?

我正在使用 go 1.18。

generics go

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

generics ×1

go ×1