golang 方法作為引數傳遞
栗子:
import "fmt"
import "time"
func goFunc1(f func()) {
go f()
}
func goFunc2(f func(interface{}), i interface{}) {
go f(i)
}
func goFunc(f interface{}, args... interface{}) {
if len(args) > 1 {
go f.(func(...interface{}))(args)
} else if len(args) == 1 {
go f.(func(interface{}))(args[0])
} else {
go f.(func())()
}
}
func f1() {
fmt.Println("f1 done")
}
func f2(i interface{}) {
fmt.Println("f2 done", i)
}
func f3(args... interface{}) {
fmt.Println("f3 done", args)
}
func main() {
goFunc1(f1)
goFunc2(f2, 100)
goFunc(f1)
goFunc(f2, "xxxx")
goFunc(f3, "hello", "world", 1, 3.14)
time.Sleep(5 * time.Second)
}
f1 done
f2 done 100
f1 done
f2 done xxxx
f3 done [[hello world 1 3.14]]
轉自 http://blog.csdn.net/eclipser1987/article/details/11772539
相關文章
- 函式作為引數傳遞函式
- Cursor 作為引數傳遞並返回結果
- JS的方法引數傳遞(按值傳遞)JS
- Go中slice作為引數傳遞的一些“坑”Go
- 說說不知道的Golang中引數傳遞Golang
- Java中方法引數傳遞詳析Java
- 將函式作為引數傳遞解決非同步問題函式非同步
- Java方法04:命令列傳遞引數、可變引數Java命令列
- Mybatis引數傳遞MyBatis
- JNI傳遞引數
- C語言 將函式(有參、無參)作為引數傳遞C語言函式
- scala:函式作為值或引數進行傳遞、作為返回值進行返回函式
- php函式引用傳遞引數的方法PHP函式
- 向路由元件傳遞引數2種方法路由元件
- GridView傳遞兩個引數的方法View
- React事件傳遞引數React事件
- 路由元件傳遞引數路由元件
- ABAP 方法呼叫的引數傳遞裡,透過引用傳遞的方式,能修改原始引數值嗎?
- 二維陣列作為引數傳遞問題陣列
- 通過行為引數化傳遞程式碼
- JavaScript為事件處理函式傳遞引數JavaScript事件函式
- Javascript 定時器呼叫傳遞引數的方法JavaScript定時器
- require方法接受以下幾種引數的傳遞:UI
- Rails--方法間透過session傳遞引數AISession
- C#引數傳遞之值引數C#
- 【Golang】golang中那些不需要傳遞引數就能使用的變數是怎麼回事Golang變數
- 請求引數的傳遞
- Shell學習【引數傳遞】
- JavaScript函式傳遞引數JavaScript函式
- out,ref,params引數傳遞
- 函式的引數傳遞函式
- 利用閉包傳遞引數
- SpringMVC之引數傳遞SpringMVC
- java 中引數的傳遞Java
- JavaScript函式引數傳遞JavaScript函式
- SSM框架中Mybatis傳遞引數的幾種方法SSM框架MyBatis
- mybatis 傳遞多個引數 --解決mybatis查詢使用多個引數方法--javabean傳統方法和map方法MyBatisJavaBean
- 有沒有試過將函式作為引數(parameter)來傳遞?(推薦) (轉)函式