在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
package main import ( "fmt" ) func main() { a,b := 1,2 A(a,b) fmt.Println(a,b) } func A(s ... int) (a,b,c int) { s[0] = 3 //值类型传递是值的拷贝,指针类型是地址的拷贝 s[1] = 4 fmt.Println(s) //...为不定长变参,前面的变量为slice,注意:不变长变参必须放最后 a,b,c = 1,2,3 return //如果函数定义了命名返回值变量,可以直接使用ruturn } 匿名函数与闭包package main import ( "fmt" ) func main() { a := func() { fmt.Println("FUNC A") } a() f := closure(10) //调用闭包外层函数,返回匿名函数 fmt.Println(f(1)) //11 fmt.Println(f(3)) //13 } //闭包 func closure(x int) func(int) int { fmt.Println("%o\n",&x) return func(y int) int { fmt.Println("%p\n",&x) return x+y } } defer
package main import ( "fmt" ) func main() { for i := 0; i<3 ;i++{ defer fmt.Println(i) //2 1 0 } for i := 0; i<3 ;i++{ defer func() { fmt.Println(i) //3 3 3 对i的引用,当main函数结束的时候,i已经为3 }() //尾部加()代表调用 } fmt.Println("a") defer fmt.Println("b") defer fmt.Println("c") }
package main import ( "fmt" ) func main() { A() B() } func A() { fmt.Println("FUNC A") } func B() { defer func() { if err := recover();err != nil{ //恢复到正常状态 fmt.Println("RECOVER IN B") C() } }() //由于程序遇到panci程序不再往下执行,所以要在panic之前注册recover panic("Panic in B") //这里往下程序不再执行 } func C() { fmt.Println("FUNC C") }
|
请发表评论