大佬教程收集整理的这篇文章主要介绍了[日常] Go语言圣经--Map习题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
练习 4.8: 修改charcount程序,使用unicode.IsLetter等相关的函数,统计字母、数字等Unicode中不同的字符类别。
练习 4.9: 编写一个程序wordfreq程序,报告输入文本中每个单词出现的频率。在第一次调用Scan前先调用input.Split(bufio.ScanWords)函数,这样可以按单词而不是按行输入。
<div class="cnblogs_Highlighter">
<pre class="brush:go;gutter:true;">// Charcount computes counts of Unicode characters.
package main
import (
"bufio"
"fmt"
"io"
"os"
"unicode"
"unicode/utf8"
)
func main() {
//counts := make(map[String]map[rune]int) // counts of Unicode characters
var utflen [utf8.UTFMax + 1]int // count of lengths of UTF-8 encodings
invalid := 0 // count of invalid UTF-8 characters
letters := make(map[rune]int)
numbers := make(map[rune]int)
in := bufio.NewReader(os.Stdin)
for {
r,n,err := in.ReadRune() // returns rune,nbytes,error
if err == io.EOF {
break
}
if err != nil {
fmt.Fprintf(os.Stderr,"charcount: %v\n",err)
os.Exit(1)
}
if r == unicode.replacementChar && n == 1 {
invalid++
conTinue
}
/*
练习 4.8: 修改charcount程序,使用unicode.IsLetter等相关的函数,统计字母、数字等Unicode中不同的字符类别。
*/
//判断是字母
if unicode.IsLetter(r){
letters[r]++
}
//判断是数字
if unicode.Isnumber(r){
numbers[r]++
}
//counts[r]++
utflen[n]++
}
fmt.Printf("rune\tcount\n")
for c,n := range letters {
fmt.Printf("%q\t%d\n",c,n)
}
fmt.Printf("rune(number)\tcount\n")
for c,n := range numbers {
fmt.Printf("%q\t%d\n",n)
}
fmt.Print("\nlen\tcount\n")
for i,n := range utflen {
if i > 0 {
fmt.Printf("%d\t%d\n",i,n)
}
}
if invalid > 0 {
fmt.Printf("\n%d invalid UTF-8 characters\n",invalid)
}
}
以上是大佬教程为你收集整理的[日常] Go语言圣经--Map习题全部内容,希望文章能够帮你解决[日常] Go语言圣经--Map习题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。