Go语言设计哲学之十五函数是一等公民

函数是日常工作中十分常用的,无论是C语言,C++、Java、Python、JavaScript都是必不可少的。

Go语言函数的特点如下:

1func关键字开头。

2支持多返回值。

3支持具名返回值。

4支持递归调用。

5支持同类型的可变参数。

6支持defer,让函数优雅的返回。

一、GO语言中如何让函数变成一等公民的?

1正常创建。标准库代码如下

//$GOROOT/src/fmt/print.gofuncnewPrinter()*pp{p:=ppFree.Get().(*pp)p.panicking=falsep.erroring=falsep.wrapErrs=falsep.fmt.init(p.buf)returnp}

2在函数内创建

在hexdumpWords函数内定义了一个匿名函数(被赋值给p1)

//$GOROOT/src/runtime/print.gofunchexdumpWords(p,enduintptr,markfunc(uintptr)byte){p1:=func(xuintptr){varbuf[2*sys.PtrSize]bytefori:=len(buf)-1;i=0;i--{ifx0xF10{buf[i]=byte(x0xF)+0}else{buf[i]=byte(x0xF)-10+a}x=4}gwrite(buf[:])}......}

3作为类型

//$GOROOT/src/net/


转载请注明:http://www.guyukameng.com/html/html1/12911.html