关于golang匿名函数的使用

关于golang匿名函数的使用

具体使用参考以下代码:

package main

import (
	"fmt"
)

func main() {

	c := func() int {
		fmt.Printf("func 1\n")
		return 2333
	}
	fmt.Println("输出1==>>>>")
	fmt.Println(c)//方法还没有被调用,只是打印变量地址

	fmt.Println("输出2==>>>>")
	ww := c()//只调用方法

	fmt.Println("输出3==>>>>")
	fmt.Println(ww)//打印返回值

	fmt.Println("输出4==>>>>")
	func(arge int) {
		fmt.Printf("func %d\n", arge)
	}(2)//直接自己给自己赋值并调用

	fmt.Println("输出5==>>>>")
	a := func() int {
		fmt.Printf("func 3\n")
		return 4555
	}
	d := a()

	fmt.Println("输出6==>>>>")
	fmt.Println(d)

	var j  = 5
	k := func() func() { //返回函数指针
		var i  = 10
		return func() {
			fmt.Printf("i, j:%d, %d\n", i, j)
		}
	}()
	fmt.Println("输出7==>>>>")
	fmt.Println(k)

	fmt.Println("输出8==>>>>")
	k()//和上述不同,调用方法返回的是一个打印函数,所以有打印的值
	j *= 2

	fmt.Println("输出9==>>>>")
	k()

}

在本地尝试以上代码,就能对golang匿名函数的使用理解的差不多了。

你可能感兴趣的:(golang)