init function

init函数用来进行初始化,在每一个源文件里面的代码,init函数最开始执行
init函数没有参数,同时也没有返回值

method

// method 是给结构体定义的函数,我们可以在func(xxx Type) 来为func指定自己的归属者,此时的func也仅仅能通过归属者进行调用
// 只要是自定义的类型都是可以执行方法的,不仅仅是struct
type Person struct {
	name string `json:"name"`
	age  int8   `json:"age"`
}

func showPerson(p Person) {
	Printf("%v, %v", p.name, p.age)
}

anonymous function

匿名函数,和javascript和dart里面的匿名函数和dart匿名函数差不多,但是必须使用func这个关键字来申明
可以定义来调用一次或者调用多次

usage

fun := func() int {
    return 100
}
// 这里表示的是将fun这个变量赋值为一个函数的指针
res := func() int {
    return 100
}()
// 这里的res就是返回的100
// 仅仅可以使用嵌套的匿名函数

closure

//一个函数和他引用的函数外的环境构成了一个闭包
var i = 0
func fun()int{
  i++
  return i
}
// 上面就构成了一个闭包