zoukankan      html  css  js  c++  java
  • 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)
        }
    
    }
  • 相关阅读:
    .net core consul
    numpy
    Cordova各个插件使用介绍系列(七)—$cordovaStatusbar手机状态栏显示
    ionic 的缓存 和局部刷新
    ionic 项目中添加modal的步骤流程
    ionic 项目中创建侧边栏的具体流程分4步简单学会
    Cordova各个插件使用介绍系列(八)—$cordovaCamera筛选手机图库图片并显示
    python-16: time 模块 之一
    python-16:模块 包
    c-3:位运算:位运算基本用法
  • 原文地址:https://www.cnblogs.com/angelyan/p/11461629.html
Copyright © 2011-2022 走看看