对数据的操作进行多步骤的处理被称为链式处理;
//字符串的链式处理函数
package main
import (
"fmt"
"strings"
)
//自定义移除前缀的处理函数
func removePrefix(str string) string {
return strings.TrimPrefix(str, "go")
}
//字符串处理函数,传入字符串切片和处理链
func StringProccess(list []string, chain []func(string) string) {
//遍历每一个字符串
for index, str := range list {
//第一个需要处理的字符串
result := str
//遍历每一个处理链
for _, proc := range chain {
//输入一个字符串进行处理,返回数据作为下一个处理链的输入
result = proc(result)
}
//将结果放回切片
list[index] = result
}
}
func main() {
//待处理的字符串列表
list := []string{
"go scanner",
"go parser",
"go compiler",
"go printer",
"go formater",
}
//处理函数链
chain := []func(string) string{
removePrefix, //自定义函数,移除前缀
strings.TrimSpace, //移除空格
strings.ToUpper, //将字符串转为大写
}
//处理字符串
StringProccess(list, chain)
//输出处理好的字符串
for _, str := range list {
fmt.Println(str)
}
fmt.Println()
}