小编Zek*_* Lu的帖子

有没有一种方法可以确保传递的值具有使用泛型的某些字段?

我试图在 Go 中定义一个通用函数,它接受具有某些字段的值,例如ID int. 我尝试了几种方法,但似乎都不起作用。这是我尝试过的一个例子。

package main

import (
    "fmt"
)

func Print[T IDer](s T) {
    fmt.Print(s.ID)
}

func main() {
    Print(Person{3, "Test"})
}

type IDer interface {
    ~struct{ ID int }
}

type Person struct {
    ID   int
    Name string
}

type Store struct {
    ID     int
    Domain string
}

Run Code Online (Sandbox Code Playgroud)

这是游乐场链接:https ://gotipplay.golang.org/p/2I4RsUCwagF

在上面的示例中,我想保证传递给Print函数的每个值都有一个属性ID int,该属性也可以在函数中访问。有什么方法可以在 Go 中实现此目的,而无需在接口中定义方法(例如GetID() int)?

generics go

7
推荐指数
1
解决办法
2220
查看次数

标签 统计

generics ×1

go ×1