golang中第一类函数数组的语法混乱



我是Go的新手。对以下代码感到困惑:

0  package main                                                                                                                                                                                                                               
1
2 import "fmt"
3
4 type job func(in, out chan interface{})
5
6 func main() {
7     myJobs := []job{
8         job(func(in, out chan interface{}) {
9             fmt.Println("marker 1")
10         }),
11         job(func(in, out chan interface{}) {
12             fmt.Println("marker 1")
13         }),
14     }
15 }

我知道第4行定义了一种新型工作。然而,我对它在第8行和第11行的使用方式感到困惑。通常,当我从另一个函数返回一个类型时,我会定义这样的类型。这个特殊用法对我来说是新的,我不明白。在第8行和第11行。具体来说,我不明白这些行是干什么的。从上下文来看,我认为这是一部分作业,但我就是不明白语法。job是一种类型,所以看起来发生的是<type>(func(in, out chan interface{})。我觉得我错过了一些重要而明显的东西。如果有任何帮助,我将不胜感激。

我怀疑类型转换可能会混淆事情;在这种情况下,这实际上并不需要,以下内容也会起作用(而且更容易理解(:

myJobs2 := []job{
func(in, out chan interface{}) {
fmt.Println("marker 1")
},
func(in, out chan interface{}) {
fmt.Println("marker 1")
},
}

我在操场上保存了一个例子。

最新更新