Go语言代码问题,下面的代码是什么意思?

var (
    responseBuilder map[string]func() thrift.TStruct
)
阅读 2.7k
2 个回答

定义变量 responseBuilder 类型为 一个key为字符类型,值为 一个返回 thrift.TStruct 的函数 的字典

可以从下面的代码理解下:

package main

import "fmt"

func main() {
    var (
        responseBuilder map[string]func() string
    )

    responseBuilder = make(map[string]func() string)

    responseBuilder["json"] = func() string {
        return "i am json"
    }

    responseBuilder["xml"] = func() string {
        return "i am xml"
    }

    fmt.Println(responseBuilder["xml"]())
    fmt.Println(responseBuilder["json"]())
}

在线体验:https://play.golang.org/p/ynC...

理解慢慢来。

var responseBuilder map[string]int 是不是可以理解
其中 string, int 都是是类型

int 替换成 func() string 即可

var responseBuilder map[string]func() string

就说这个 map 的 value 可以是任何 函数值为 func() string 的函数



PS:

Golang 的语法有时候确实绕。

比如 StrTo(PORT),ToStr(PORT),光这么看,根本就区分不出,是调用函数,还是类型转换。

合理的可能就是

type StrTo string ,所以 StrTo(PORT) 是类型转换

func ToStr(port int ){},所以 ToStr(PORT) 是调动函数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题