一、知识点,
1、用rune将string统一成int32编码,go默认是utf-8,所以默认情况下中文字符是占3个字节
2、index,value := range 数组,可以遍历得到角标和对应的字符
3、获取控制台输入的一行字符串,用到os和bufio包
二、代码,
、、、
package main
import (
"bufio"
"fmt"
"os"
)
func count(str string) (letterCount, spaceCount, numberCount, otherCount int) {
t := []rune(str)
for _, v := range t {
switch {
case (v >= 'a' && v <= 'z') || (v >= 'A' && v <= 'Z'):
letterCount++
case v == ' ':
spaceCount++
case v >= '0' && v <= '9':
numberCount++
default:
otherCount++
}
}
return
}
func main() {
reader := bufio.NewReader(os.Stdin)
result, _, err := reader.ReadLine()
if err != nil {
fmt.Println("read from console err:", err)
return
}
letterCount, spaceCount, numberCount, otherCount := count(string(result))
fmt.Printf("letterCount=%d\nspaceCount=%d\numberCount=%d\notherCount=%d\n", letterCount, spaceCount, numberCount, otherCount)
}
、、、
3、图片及运行结果