首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go程序例子(66):行过滤器

Go程序例子(66):行过滤器

原创
作者头像
用户11078756
发布2025-01-20 10:48:52
发布2025-01-20 10:48:52
2260
举报
文章被收录于专栏:go程序例子go程序例子

行过滤器是一种常见的程序类型,它从标准输入(stdin)读取数据,进行处理,然后将一些派生结果打印到标准输出(stdout)。grep 和 sed 是常见的行过滤器。

以下是一个用 Go 编写的行过滤器示例,它将所有输入文本转换为大写形式。你可以使用这个模式来编写自己的 Go 行过滤器。

代码语言:go
复制
package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
		// 将未缓冲的 os.Stdin 包装在一个带缓冲的扫描器中,为我们提供了一个方便的 Scan 方法,该方法会将扫描器推进到下一个标记;在默认的扫描器中,下一个标记就是下一行。
    scanner := bufio.NewScanner(os.Stdin)
		// Text 方法会返回当前的标记,在这里也就是输入中的下一行内容。
    for scanner.Scan() {

        ucl := strings.ToUpper(scanner.Text())
				// 将大写的行内容输出。
        fmt.Println(ucl)
    }
		// 在 Scan 过程中检查错误。文件末尾是预期的情况,不会被 Scan 当作错误报告。
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "error:", err)
        os.Exit(1)
    }
}

运行结果:

代码语言:javascript
复制
➜ go run line-filters/line-filters.go                 
aaaa
AAAA
aaaaaaa
AAAAAAA
aaaaaaaaaaaaaaa
AAAAAAAAAAAAAAA
ww
WW
acc
ACC
echo 
ECHO

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档