go语言中函数定义结尾的小括号是怎么回事

    func(name string) {
        fmt.Println("Your name is", name)
    } (str)   <- what's this?

其实,这就是在调用这个函数,等同于:

    f := func(name string) {
        fmt.Println("Your name is", name)
    }
    f(str)

例如,

package main

import (
  "fmt"
)

func main() {
    str := "Alice"
    func(name string) {
        fmt.Println("Your name is", name)
    }(str)
}

运行结果:

Your name is Alice

又如:

package main

import (
  "fmt"
)

func main() {
    f := func(name string) {
        fmt.Println("Your name is", name)
    }
    f(str)
}

运行结果一样的。

参考

https://stackoverflow.com/questions/16008604/why-add-after-closure-body-in-golang

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容