golang的slice支持func。使用func slice要注意func要完整描述入参出参。

如果需要执行一系列类型相同(入参出参格式相同)的函数,可以动态添加到一个slice里面。range slice顺序执行,也可并发执行,构造匿名goroutine,代码如下。

package main

import (
"fmt"
"time"
) func f1(Str string) bool {
if len(Str) == 0 {
return false
}
fmt.Println("f1 Str =", Str)
return true
}
func f2(Str string) bool {
if len(Str) == 0 {
return false
}
fmt.Println("f2 Str =", Str)
return true
}
func f3(Str string) bool {
if len(Str) == 0 {
return false
}
fmt.Println("f3 Str =", Str)
return true
}
func main() {
//函数的入参出餐类型个数,都需要明确:func(string) bool
var FuncSlice []func(string) bool = []func(string) bool{f1, f2, f3}
for _, v := range FuncSlice {
go func(v func(string) bool) {
if TempFlag := v("aaa"); TempFlag == true {
}
}(v)
}
time.Sleep(time.Second * 1)
}

  执行结果截图:

  如果想对入参string也做一个切片,并发处理切片里的每个string类型对象,并且每个对象并发执行那些系列函数。代码如下:

func main() {
//string类型切片,并发处理每个对象
var Strings []string = []string{"test1", "test2", "test3", "test4", "test5"} //函数的入参出餐类型个数,都需要明确:func(string) bool,并发执行每个函数
var FuncSlice []func(string) bool = []func(string) bool{f1, f2, f3} for _, String := range Strings {
go func(String string) {
for _, v := range FuncSlice {
go func(v func(string) bool) {
if TempFlag := v(String); TempFlag == true {
}
}(v)
}
}(String)
} time.Sleep(time.Second * 1)
}

  执行结果:

golang 并发执行函数func类型slice的更多相关文章

  1. Golang通脉之函数

    函数是组织好的.可重复使用的.用于执行指定任务的代码块. Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于"一等公民". 函数定义 Go语言中定义函数使用func关键字 ...

  2. golang 函数作为类型

    golang 函数作为类型 package main import "fmt" type A func(int, int) func (f A)Serve() { fmt.Prin ...

  3. 【GoLang】函数作为 类型 和 值

    代码示例 package test import ( "fmt" "testing" ) type testInt func(int) bool func is ...

  4. 使用JavaScript实现量化策略并发执行——封装Go函数

    在实现量化策略时,很多情况下,并发执行可以降低延时提升效率.以对冲机器人为例,需要获取两个币的深度,顺序执行的代码如下: 请求一次rest API存在延时,假设是100ms,那么两次获取深度的时间实际 ...

  5. 四、golang内置函数、递归、闭包、数组切片和map

    一.总体内容 1.内置函数.递归函数.闭包 2.数组和切片 3.map数据结构 4.package介绍 一.内置函数 注意:值类型用new来分配内存,引用类型用make来分配内存 1.close:主要 ...

  6. Golang 并发简介

    并发概要 随着多核CPU的普及, 为了更快的处理任务, 出现了各种并发编程的模型, 主要有以下几种: 模型名称 优点 缺点 多进程 简单, 隔离性好, 进程间几乎无影响 开销最大 多线程 目前使用最多 ...

  7. Golang基础之函数

    golang基础之函数 1.为什么需要函数? 有些相同的代码可能出现多次,如果不进行封装,那么多次写入到程序中,会造成程序冗余,并且可读性降低 2.什么是函数 为完成某些特定功能的程序指令集合称为函数 ...

  8. Golang面向过程编程-函数

    Golang面向过程编程-函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是函数 简单的说函数的作用就是把程序里多次调用的相同的代码部分定义成一份,然后起个名字,所有的 ...

  9. golang并发编程goroutine+channel(一)

    go语言的设计初衷除了在不影响程序性能的情况下减少复杂度,另一个目的是在当今互联网大量运算下,如何让程序的并发性能和代码可读性达到极致.go语言的并发关键词 "go" go dos ...

随机推荐

  1. 跳舞玩偶Doll正式上线

    有问题或者建议大家可以联系我的QQ 914287516 或者qq邮箱 官方qq群 325631077:

  2. dynamic_cast动态转换

    我们都知道dynamic_cast会在运行时进行类型检查,比较安全,static_cast静态转换,不安全 dynamic_cast转换的类型必须是个类,且这个类中必须有虚函数,为什么呢? 虚函数对于 ...

  3. 用poi-3.6-20091214.jar 实现java给excel资料加密

    用poi-3.6-20091214.jar 实现java给excel文件加密我用了网上的很多方法,但是都没有成功! HSSFWorkbook wb = new HSSFWorkbook(new Fil ...

  4. Codeforces Round #423 (Div. 2)

    codeforces 423 A. Restaurant Tables [水题] //注意,一个人选座位的顺序,先去单人桌,没有则去空的双人桌,再没有则去有一个人坐着的双人桌.读清题意. #inclu ...

  5. boost::timer库使用

    boost::timer boost库定时器使用,需要在编译时加相关链接库 -lboost_timer -lboost_system boost::timer::cpu_timer 和boost::t ...

  6. js中返回上一页

    <a class="btn btn-danger" href="javascript:history.go(-1);">取消</a>

  7. Dos小技巧-在Dos中直接打开软件

    在這裡我們舉一個例子 在D盤的D:\Program Files (x86)\Youdao\Dict4下面是關於有道字典的基本信息如圖(1.1.1).當點擊uninst.exe的時候顯示如圖:(1.1. ...

  8. 面试准备——(二)专业知识(2)Python

    面试遇到的问题: 滴滴: 1. Python的数据结构 2. list和tuple的区别 3. list中有哪些操作?append和extend的区别? 4. list和dict的却别?dict是有序 ...

  9. Qgis 里的Python脚本介绍

    QGIS 入门演示之<用 QGIS 画矢量交通路线图> 脚本编程之准备知识<Python 教程> QGIS API QGIS插件库 运行QGIS脚本,对于桌面应用来讲有4种方式 ...

  10. Knowledge Point 20180303 详解main函数

    学习Java的朋友想来都是从HelloWorld学起的,那么想来都对main函数不陌生了,但是main函数究竟是怎么回事呢?main函数中的参数是做什么的呢?main函数为什么能作为程序的入口呢?可不 ...