青训营X豆包MarsCode 技术训练营 后端实践选题 |豆包MarsCode AI 刷题

37 阅读2分钟

以下为你提供一个简单的Go语言工程实践课后作业示例,包含实现思路、代码以及大概的路径相关说明,你可以根据实际作业要求去调整哦。

示例作业题目

编写一个Go程序,实现从一个文本文件中读取内容,统计其中每个单词出现的次数,并将结果输出到另一个文件中。

实现思路

  1. 打开文件:使用Go语言内置的os包来打开输入的文本文件,获取文件句柄用于后续读取操作,同时准备好用于输出结果的文件句柄。

  2. 读取内容:通过bufio包按行读取文本文件中的内容,将每行字符串拆分成一个个单词(可以按照空格等分隔符来拆分)。

  3. 统计单词:使用map数据结构,以单词作为键,出现次数作为值。每读取到一个单词,就在map中查找,如果已存在就将对应的值(出现次数)加1,如果不存在就添加进map并将值初始化为1。

  4. 输出结果:遍历统计好的map,将单词和对应的出现次数按照一定格式(比如单词:次数)写入到输出文件中。

  5. 关闭文件:操作完成后,关闭打开的输入和输出文件,释放资源。

代码示例 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是输出文件,会根据代码中的逻辑创建在相应位置(如果指定的是相对路径,则是相对于程序运行时的当前