以下为你提供一个简单的Go语言工程实践课后作业示例,包含实现思路、代码以及大概的路径相关说明,你可以根据实际作业要求去调整哦。
示例作业题目
编写一个Go程序,实现从一个文本文件中读取内容,统计其中每个单词出现的次数,并将结果输出到另一个文件中。
实现思路
-
打开文件:使用Go语言内置的os包来打开输入的文本文件,获取文件句柄用于后续读取操作,同时准备好用于输出结果的文件句柄。
-
读取内容:通过bufio包按行读取文本文件中的内容,将每行字符串拆分成一个个单词(可以按照空格等分隔符来拆分)。
-
统计单词:使用map数据结构,以单词作为键,出现次数作为值。每读取到一个单词,就在map中查找,如果已存在就将对应的值(出现次数)加1,如果不存在就添加进map并将值初始化为1。
-
输出结果:遍历统计好的map,将单词和对应的出现次数按照一定格式(比如单词:次数)写入到输出文件中。
-
关闭文件:操作完成后,关闭打开的输入和输出文件,释放资源。
代码示例 package main
import ( "bufio" "fmt" "os" "strings" )
func main() { // 打开输入文件 inputFile, err := os.Open("input.txt") if err!= nil { fmt.Println("打开输入文件出错:", err) return } defer inputFile.Close()
// 打开输出文件
outputFile, err := os.Create("output.txt")
if err!= nil {
fmt.Println("创建输出文件出错:", err)
return
}
defer outputFile.Close()
wordCount := make(map[string]int)
scanner := bufio.NewScanner(inputFile)
// 逐行读取文件内容
for scanner.Scan() {
line := scanner.Text()
words := strings.Fields(line)
for _, word := nil {
wordCount[word]++
}
}
// 写入结果到输出文件
for word, count := range wordCount {
_, err := outputFile.WriteString(fmt.Sprintf("%s:%d\n", word, count))
if err!= nil {
fmt.Println("写入文件出错:", err)
return
}
}
fmt.Println("统计完成,结果已写入output.txt")
} 路径记录说明
• 代码路径:通常将上述代码保存为一个以.go为后缀的文件,比如命名为word_count.go,可以放在你本地计算机方便管理的某个文件夹下,比如D:\go_projects\homework(这里只是示例路径,你可以自行选择合适的路径存放代码文件)。
• 文件路径:在代码中指定的input.txt就是输入文件的路径名称,要确保程序运行时能正确找到该文件,可以将它放在和代码文件同一目录下,或者指定准确的绝对路径。同理,output.txt是输出文件,会根据代码中的逻辑创建在相应位置(如果指定的是相对路径,则是相对于程序运行时的当前