for 中range遍历

一、知识点,

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、图片及运行结果


你可能感兴趣的:(for 中range遍历)