golang函数
一、函数语法
func 函数名(形参列表) (返回值列表){
......
return 返回值
}
例如:
package main
import "fmt"
func test_func(n1 int,n2 int) (int){
var ret int
ret = n1 + n2
return ret
}
func main(){
var f int
f = test_func(1,3)
fmt.Printf("Type: %T Value: %v\n",f,f)
}
##结果##
Type: int Value: 4
二、递归函数
例子
package main
import "fmt"
func digui_func(n1 int){
if n1 > 2 {
n1--
fmt.Println(n1)
digui_func(n1)
}
}
func main(){
digui_func(5)
}
##结果##
4
3
2
三、init函数(初始化函数)
没一个源文件都可以包含一个init函数,init函数校准main函数执行前执行。
例子:
package main
import "fmt"
func init(){
fmt.Println("init.....")
}
func main(){
fmt.Println("main.....")
}
##结果##
init.....
main.....
四、匿名函数
例子:
package main
import "fmt"
func main(){
res := func(n1,n2 int) int{
return n1 + n2
}
var s1 int
var s2 int
s1 = res(1,2)
fmt.Println(s1)
s2 = res(3,4)
fmt.Println(s2)
}
##结果##
3
7
全局匿名函数
例子:
package main
var (
res := func(n1,n2 int) int{
return n1 + n2
}
)
五、闭包函数
例子:
package main
import "fmt"
func bibao() func (int) int {
var n int = 10
return func (x int) int {
n = n + x
return n
}
}
func main(){
f := bibao()
f1 := bibao()
fmt.Println(f(1))
fmt.Println(f1(2))
}
##结果##
11
12
六、函数的defer
为了在函数执行完成后,及时释放资源,go的设计者提供了defer(延时机制)
适合用再关闭文件、关闭数据库连接等
例子:
package main
import "fmt"
func test() int {
defer fmt.Println("s1")
defer fmt.Println("s2")
var ss int = 10
fmt.Println("s3")
return ss
}
func main(){
ret := test()
fmt.Println(ret)
}
##结果##
s3
s2
s1
10

浙公网安备 33010602011771号