Lv.的博客

go语言将函数作为参数传递

 

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

 

 

[plain] view plain copy
 
  1. import "fmt"  
  2. import "time"  
  3.   
  4. func goFunc1(f func()) {  
  5.         go f()   
  6. }  
  7.   
  8. func goFunc2(f func(interface{}), i interface{}) {  
  9.         go f(i)  
  10. }  
  11.   
  12. func goFunc(f interface{}, args... interface{}) {  
  13.         if len(args) > 1 {   
  14.                 go f.(func(...interface{}))(args)  
  15.         } else if len(args) == 1 {   
  16.                 go f.(func(interface{}))(args[0])  
  17.         } else {  
  18.                 go f.(func())()  
  19.         }     
  20. }  
  21.   
  22. func f1() {  
  23.         fmt.Println("f1 done")  
  24. }  
  25.   
  26. func f2(i interface{}) {  
  27.         fmt.Println("f2 done", i)  
  28. }  
  29.   
  30. func f3(args... interface{}) {  
  31.         fmt.Println("f3 done", args)  
  32. }  
  33.   
  34. func main() {  
  35.         goFunc1(f1)  
  36.         goFunc2(f2, 100)  
  37.           
  38.         goFunc(f1)  
  39.         goFunc(f2, "xxxx")  
  40.         goFunc(f3, "hello", "world", 1, 3.14)  
  41.         time.Sleep(5 * time.Second)  
  42. }  

 

 

 

f1 done
f2 done 100
f1 done
f2 done xxxx
f3 done [[hello world 1 3.14]]
posted @   Avatarx  阅读(1843)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2016-03-02 软件版本控制介绍
2016-03-02 git svn 5点区别
点击右上角即可分享
微信分享提示