package main
import "fmt"
// 声明一个函数类型
type cb func(int) int
func main() {
testCallBack(1, callBack)
testCallBack(2, func(x int) int {
fmt.Printf("我是回调,x:%d\n", x)
return x
})
}
func testCallBack(x int, f cb) {
f(x)
}
func callBack(x int) int {
fmt.Printf("我是回调,x:%d\n", x)
return x
}
2192go-nested-loops
九九乘法表:
package main
import "fmt"
func main() {
for m := 1; m < 10; m++ {
/* fmt.Printf("第%d次:\n",m) */
for n := 1; n <= m; n++ {
fmt.Printf("%dx%d=%d ",n,m,m*n)
}
fmt.Println("")
}
}
package main
import "fmt"
func Chann(ch chan int){
var i int
i = 10
ch <- i
}
func main(){
ch := make(chan int)
c := 0
go Chann(ch)
select{
case c = <- ch:
fmt.Println("Recvice", c)
fmt.Println("channel")
case s := <-ch:
fmt.Println("Receive", s)
//default:
//fmt.Println("Error")
}
}
2195go-function-closures
闭包带参数补充:
package main import "fmt" func main() { add_func := add(1,2) fmt.Println(add_func(1,1)) fmt.Println(add_func(0,0)) fmt.Println(add_func(2,2)) } // 闭包使用方法 func add(x1, x2 int) func(x3 int,x4 int)(int,int,int) { i := 0 return func(x3 int,x4 int) (int,int,int){ i++ return i,x1+x2,x3+x4 } }2194go-function-closures
带参数的闭包函数调用:
package main import "fmt" func main() { add_func := add(1,2) fmt.Println(add_func()) fmt.Println(add_func()) fmt.Println(add_func()) } // 闭包使用方法 func add(x1, x2 int) func()(int,int) { i := 0 return func() (int,int){ i++ return i,x1+x2 } }2193go-function-as-values
函数作为参数传递,实现回调。
package main import "fmt" // 声明一个函数类型 type cb func(int) int func main() { testCallBack(1, callBack) testCallBack(2, func(x int) int { fmt.Printf("我是回调,x:%d\n", x) return x }) } func testCallBack(x int, f cb) { f(x) } func callBack(x int) int { fmt.Printf("我是回调,x:%d\n", x) return x }2192go-nested-loops
九九乘法表:
package main import "fmt" func main() { for m := 1; m < 10; m++ { /* fmt.Printf("第%d次:\n",m) */ for n := 1; n <= m; n++ { fmt.Printf("%dx%d=%d ",n,m,m*n) } fmt.Println("") } }2191go-select-statement
以下实例中有两个 case,每执行一次,会随机进入其中一个 case,结论是 select 会循环检测条件,如果有满足则执行并退出,否则一直循环检测。
package main import "fmt" func Chann(ch chan int){ var i int i = 10 ch <- i } func main(){ ch := make(chan int) c := 0 go Chann(ch) select{ case c = <- ch: fmt.Println("Recvice", c) fmt.Println("channel") case s := <-ch: fmt.Println("Receive", s) //default: //fmt.Println("Error") } }