python和go对比字符串的链式处理

一、什么是链式处理

对数据的操作进行多步骤的处理称为链式处理,链式处理器是一种常见的编程设计,链式处理的开发思想将数据和操作拆分,解耦,让开发者可以根据自己的技术优势和需求,进行系统开发,同时将自己的开发成果共享给其他的开发者。

本案例是一个以字符串列表作为切入,在一个列表中有多个字符串,将每个字符串进行多次处理,最后得到一个新的列表(在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)
    }

}

猜你喜欢

转载自www.cnblogs.com/angelyan/p/11461629.html