使用Go语言实现向文件写入内容的示例代码

 更新时间:2025年07月20日 09:16:55   作者:程序员爱钓鱼  
向文件写入内容 的完整内容,这是文件操作的另一个核心技能,与读取配套,适用于日志记录、生成报告、写配置等场景,本文通过代码示例介绍的非常详细,需要的朋友可以参考下

一、案例目标

编写一个 Go 程序,将一段字符串内容写入到本地 .txt 文件中。若文件不存在则自动创建,存在则覆盖写入或追加写入。

二、应用场景示例

  • 日志系统:写入运行记录、用户行为
  • 自动生成报告:写结果到文件中
  • 导出数据:如导出表格、文本分析报告
  • 写配置文件或缓存

三、涉及知识点

知识点说明
os.WriteFile快捷写入整个内容
os.OpenFile控制写入模式(创建/追加/覆盖)
defer 关闭文件避免资源泄露
字符编码Go 默认 UTF-8 支持中文无障碍

四、功能需求

  1. 将一段字符串写入指定文件;
  2. 自动创建新文件;
  3. 支持两种写入模式:覆盖写入 & 追加写入;
  4. 写入完成提示用户。

五、示例代码:覆盖写入(适合生成报告)

package main

import (
    "fmt"
    "os"
)

func main() {
    content := "你好,Go语言!\n这是一段写入文件的文本内容。\n"
    filename := "output.txt"

    err := os.WriteFile(filename, []byte(content), 0644)
    if err != nil {
        fmt.Println("写入文件失败:", err)
        return
    }

    fmt.Println("内容已成功写入文件:", filename)
}

执行后,会在当前目录生成 output.txt 文件,内容如下:

你好,Go语言!
这是一段写入文件的文本内容。

六、示例代码:追加写入(适合日志、历史记录)

package main

import (
    "fmt"
    "os"
)

func main() {
    filename := "log.txt"
    content := "【INFO】程序运行于:" + timeNow() + "\n"

    // 打开文件并设置为追加写入模式
    file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
    if err != nil {
        fmt.Println("打开文件失败:", err)
        return
    }
    defer file.Close()

    _, err = file.WriteString(content)
    if err != nil {
        fmt.Println("写入失败:", err)
        return
    }

    fmt.Println("追加写入成功:", content)
}

// 获取当前时间
func timeNow() string {
    return fmt.Sprintf("%s", os.Getenv("TZ")) // 或 time.Now().Format("2006-01-02 15:04:05")
}

日志会被追加到 log.txt 文件末尾。

七、权限解释

权限模式含义
0644所有者可读写,其他用户只读
0666所有人可读写(不推荐)
os.O_CREATE文件不存在时创建
os.O_APPEND写入追加到末尾
os.O_WRONLY只写模式

八、拓展建议

  • 写入用户输入的内容(结合 fmt.Scanln);
  • 支持文件名通过命令行参数指定;
  • 每次写入自动记录时间戳;
  • 写 JSON/CSV 文件(见后续案例);
  • 实现简单的记事本工具或日志记录器;

小结

通过本案例你学会了:

  • 如何创建并写入本地文件
  • 快速写入 vs 控制写入模式
  • 写入中文、自动编码无障碍
  • 错误处理与资源释放的好习惯

以上就是使用Go语言实现向文件写入内容的示例代码的详细内容,更多关于Go向文件写入内容的资料请关注脚本之家其它相关文章!

相关文章

  • goquery 入门(安装使用教程)

    goquery 入门(安装使用教程)

    这篇文章主要为大家介绍了goquery 入门(安装使用)教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Golang并发编程之GMP模型详解

    Golang并发编程之GMP模型详解

    传统的并发编程模型是基于线程和共享内存的同步访问控制的,共享数据受锁的保护,线程将争夺这些锁以访问数据。本文将介绍Go并发编程中的GMP模型,感兴趣的可以了解一下
    2023-03-03
  • 如何避免Go语言常见错误之意外的变量隐藏

    如何避免Go语言常见错误之意外的变量隐藏

    在Go语言中,变量隐藏(Variable Shadowing)是一个常见的错误来源,变量隐藏发生在一个内部作用域中声明的变量与外部作用域的变量同名时,这可能导致开发者无意中使用了错误的变量,造成难以追踪的bug,本文讲解一些关于变量隐藏的常见错误和如何避免它们的方法
    2024-01-01
  • Go 项目目录布局保姆级教程

    Go 项目目录布局保姆级教程

    这篇文章主要为大家介绍了Go 项目目录布局保姆级教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • golang中sync.Map并发创建、读取问题实战记录

    golang中sync.Map并发创建、读取问题实战记录

    这篇文章主要给大家介绍了关于golang中sync.Map并发创建、读取问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • 轻松构建Go应用的Dockerfile

    轻松构建Go应用的Dockerfile

    本文介绍了如何制作一个用于构建和运行Go应用程序的Docker镜像的Dockerfile的相关资料,需要的朋友可以参考下
    2023-10-10
  • Go interface{} 转切片类型的实现方法

    Go interface{} 转切片类型的实现方法

    本文主要介绍了Go interface{} 转切片类型的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 一文搞懂Golang中的内存逃逸

    一文搞懂Golang中的内存逃逸

    内存逃逸是 Go 语言中一个重要的概念,涉及到程序的性能优化和内存管理,了解内存逃逸可以帮助我们编写更高效的代码,本文将从基本概念入手,深入讲解 Go 语言中的内存逃逸现象,以及如何避免,需要的朋友可以参考下
    2023-12-12
  • 一篇文章读懂Golang init函数执行顺序

    一篇文章读懂Golang init函数执行顺序

    init()函数会在包被初始化后自动执行,并且在main()函数之前执行,但是需要注意的是init()以及main()函数都是无法被显式调用的,下面这篇文章主要给大家介绍了关于如何通过一篇文章读懂Golang init函数执行顺序的相关资料,需要的朋友可以参考下
    2022-11-11
  • 深入了解Golang的map增量扩容

    深入了解Golang的map增量扩容

    这篇文章主要介绍了深入了解Golang的map增量扩容,扩容的主要目的是为了缩短map容器的响应时间。增量扩容的本质其实就是将总的扩容时间分摊到了每一次hash操作上,更多相关内容需要的小伙伴可以参考一下
    2022-06-06

最新评论