首页 > 解决方案 > 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{}). 我觉得我错过了一些重要而明显的东西。我将不胜感激。

标签: go

解决方案


我怀疑类型转换可能会使事情变得混乱;在这种情况下实际上不需要这样做,以下内容也可以使用(并且更容易理解):

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

我在go playground中保存了一个示例。


推荐阅读