• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go语言函数作为参数传递

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

go语言函数作为参数传递,目前给我的感觉几乎和C/C++一致。非常的灵活。

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap