匿名函数,顾名思义,没有函数名的函数。
    匿名函数的定义格式如下:

    1. func(参数列表)(返回参数列表){
    2. 函数体
    3. }

    匿名函数可以在使用函数的时候再声明

    1. package main
    2. import "fmt"
    3. func main() {
    4. // (1) 无返回值
    5. (func() {
    6. fmt.Println("hello qigaogao")
    7. })()
    8. // (2) 有返回值
    9. z := (func(x, y int) int {
    10. return x + y
    11. })(1, 2)
    12. fmt.Println(z)
    13. }

    也可以将匿名函数作为一个 func 类型数据赋值给变量

    1. var f = func() {
    2. fmt.Println("gaogao")
    3. }
    4. fmt.Println(reflect.TypeOf(f)) // func()
    5. f() //赋值调用

    Go语言不支持在函数内部声明普通函数,只能声明匿名函数

    1. func foo() {
    2. fmt.Println("foo功能")
    3. // 不支持普通函数,只能声明匿名函数
    4. f := func() {
    5. fmt.Println("bar功能")
    6. }
    7. fmt.Println(f)
    8. }
    9. func main() {
    10. foo() // foo功能 0x10a3260
    11. }