一、什么是链式处理
对数据的操作进行多步骤的处理称为链式处理,链式处理器是一种常见的编程设计,链式处理的开发思想将数据和操作拆分,解耦,让开发者可以根据自己的技术优势和需求,进行系统开发,同时将自己的开发成果共享给其他的开发者。
本案例是一个以字符串列表作为切入,在一个列表中有多个字符串,将每个字符串进行多次处理,最后得到一个新的列表(在go中使用的是切片)
二、python代码
strList=["go scanner", "go parser", "go compiler", "go printer", "go formater",] def StringProcess(strList,chain): for i,s in enumerate(strList): for f in chain: s=f(s) strList[i]=s def removePrefix(s): return s.lstrip("go") def TrimSpace(s): return s.strip() def ToUpper(s): return s.upper() chain=[removePrefix,TrimSpace,ToUpper] StringProcess(strList,chain) print(strList)
三、go代码
package main import ( "fmt" "strings" ) func StringProcess(list []string,chain []func(string) string){ //遍历每一个字符串 for index,str:=range list{ //第一个需要处理的字符串 result:=str //遍历每一个处理链 for _, proc:=range chain { //输入一个字符串进行处理,返回数据作为下一个处理链的输入 result=proc(result) } //将结果放回切片 list[index]=result } } func removePrefix(str string)string{ //移除字符串中go的前缀 return strings.TrimPrefix(str,"go") } func main() { //待处理的字符串列表 list:=[]string{ "go scanner", "go parser", "go compiler", "go printer", "go formater", } //处理函数链 chain :=[]func(string)string{ removePrefix, strings.TrimSpace, strings.ToUpper, } //处理字符串 StringProcess(list,chain) //输出处理好的字符串 for _,str:=range list{ fmt.Println(str) } }