目前我有这样的事情
main.go
gojob.NewJob("every 2 second", "pene", func() { t := gojob.Custom("pene") log.Println(t) }, struct { Id int }{ 1, })
还有我的工作包
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秒执行一次,但是我想访问我传递的匿名结构…但是当我尝试访问时
编号
我越来越
t.Id未定义(类型interface {}是没有方法的接口)
但是打印t给我预期的结果
{1}
您必须先将其声明为兼容类型,然后才能访问其字段。
id := v.(struct{Id int}).Id