使用Golang计算文本文件中的单例数

时间:2014-01-27 05:08:19

标签: string count go singleton

如何计算使用GO在文本文件中出现一次的字符串数? 我已经阅读了golang的一些包描述,也许我应该使用bufio.NewScanner一次读取传入文件的内容。然后我尝试使用map来计算每个字符串的出现次数:

stringcount:= make(map [string] int)

如何更新此空地图的数据?例如,如果文件中的第一个字符串是“hello”,那么如何使stringcount [“hello”] = 1?

这是我的尝试:

package main

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

func main() {

    frequencyofWord := map[string]int{}

    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "reading standard input:", err)
    }

    s := strings.Fields(scanner.Text()) //one more question : is strings.Fields used correctly here?
    countSingleton(s)

}

func countSingleton(a []string) {
    //here how to update the map according to the text read ?//
}

1 个答案:

答案 0 :(得分:2)

使用bufio.NewScanner分隔线条,使用strings.Fields获取字词,然后使用yourMap[theWord]++计算字数。

示例:http://play.golang.org/p/3H6gfBlQL5

要获取唯一字词列表,iterate在地图键上,append将其设为slice,然后sort