对文件的内容进行统计字母数字中文,并且显示每个结果
package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
)
type Count struct {
Strcount int
Numcount int
Other int
China int
}
func main() {
filename := "./abc.txt"
file, err := os.Open(filename)
if err != nil {
log.Fatal(err)
}
var c Count
//返回带缓冲的reader
readre := bufio.NewReader(file)
for {
//// ReadString读取,直到输入中第一次出现delim,
//返回一个字符串,该字符串包含分隔符之前的数据,并包含分隔符。
//如果ReadString在找到分隔符之前遇到错误,
//它返回在错误之前读取的数据和错误本身(通常是io.EOF)。
// ReadString返回err != nil,当且仅当返回的数据没有结束
// delim 意思就是分割
str, err := readre.ReadString('\n')
//开始遍历读取的str数据 str底层是byte字节数组
//我们要判断是不是中文 所以这里转成 rune UTF-8编码 大于255肯定是中文
for _, v := range []rune(str) {
switch {
case v >= 'a' && v <= 'z':
fallthrough
case v >= 'A' && v <= 'Z':
c.Strcount++
case v >= '0' && v <= '9':
c.Numcount++
case v > 255:
c.China++
default:
c.Other++
}
}
//文件读取结束 跳出循环
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
}
fmt.Println("c.Numcoun=", c.Numcount)
fmt.Println("c.Strcount=", c.Strcount)
fmt.Println("c.China=", c.China)
fmt.Println("c.Other=", c.Other)
}
提供面试指导、模拟面试、简历项目优化和职业规划等
负责SRE团队,运维架构(DevOps)、微服务流量治理(K8s、Ingress)、稳定性和可测性系统建设(Prometheus、EFK、Loki)

浙公网安备 33010602011771号