目前我有这样的东西

主要的go

gojob.NewJob("every 2 second", "pene", func() {
        t := gojob.Custom("pene")
        log.Println(t)
    }, struct {
        Id int
    }{
        1,
    })

还有我的gojob套餐

func NewJob(t string, name string, c func(), v interface{}) {
    e := strings.Split(t, " ")
    job := process(e)
    job.log = false
    job.name = name
    job.action = c
    job.custom = v
    jobs = append(jobs, job)
}

func Custom(name string) interface{} {
    for i := range jobs {
        if jobs[i].name != name {
            continue
        }
        return jobs[i].custom
    }
    return nil
}

问题是,我传递给NewJob的函数在Goroutine上每隔2秒执行一次,但我想访问我传递的匿名 struct ……但是,当我try 访问

t.Id

我得到了

t、 Id未定义(类型接口{}是没有方法的接口)

但是,打印t会给出预期的结果.

{1}

推荐答案

您必须将其type assert转换为兼容类型,然后才能访问其字段.

id := v.(struct{Id int}).Id

Go相关问答推荐

Golang html/模板&需要错误数量的参数1在模板中使用';调用';获得0&q;

在Go中根据命名空间/字符串生成UUID

禁用Golang中的终端

如何在jsonrpc服务器的服务器端捕获错误?

无法使用Segentio;S Kafka-Go连接到融合的Kafka

从带有嵌套括号的字符串中提取值

如何将 goose 迁移与 pgx 一起使用?

无效操作:v > max(类型参数 T 与 > 不可比较)

golang / urfave.cli:无法手动设置标志

通过多阶段构建复制到 Docker 容器中时找不到文件

GoLang: gocui 边框 colored颜色

具有两个参数的动态规划:天数和优惠券

如何将 base64 编码的公钥转换为 crypto.PublicKey 或 ecdsa.PublicKey

Golang代码判断第一个词是否可以从第二个词形成

Go 的垃圾收集器在使用时删除 ZeroMQ 套接字

Golang模板无法访问embedFS中的文件

Golang:隐式 struct 匹配

如何解决在mac m1中运行gcc失败退出状态1?

如何使用 fyne 避免 GUI 应用程序中的循环依赖?

在 Go 中表达函数的更好方法( struct 方法)