我们使用Go语言开发一些程序的时候,往往出现多个进程同时操作同一份文件的情况,这很容易导致文件中的数据混乱。这时我们就需要采用一些手段来平衡这些冲突,文件锁(flock)应运而生,下面我们就来介绍一下。 ...
Go语言文件的写入、追加、读取、复制操作
Go语言的 os 包下有一个 OpenFile 函数,其原型如下所示: func OpenFile(name string, flag int, perm FileMode) (file *File, err error) 其中 name 是文件的文件名,如果不是在当前路径下运行需要加上具体...
Go语言使用buffer读取文件
buffer 是缓冲器的意思,Go语言要实现缓冲读取需要使用到 bufio 包。bufio 包本身包装了 io.Reader 和 io.Writer 对象,同时创建了另外的 Reader 和 Writer 对象,因此对于文本 I/O 来说,bufio 包提供了一定的便...
Go语言tar归档文件的读写操作
创建 tar 归档文件 tar 是一种打包格式,但不对文件进行压缩,所以打包后的文档一般远远大于 zip 和 tar.gz,因为不需要压缩的原因,所以打包的速度是非常快的,打包时 CPU 占用率也很低。 tar 的目的在于方...
Go语言zip归档文件的读写操作
Go语言的标准库提供了对几种压缩格式的支持,其中包括 gzip,因此 Go 程序可以无缝地读写 .gz 扩展名的 gzip 压缩文件或非 .gz 扩展名的非压缩文件。此外标准库也提供了读和写 .zip 文件、tar 包文件(.tar 和 .t...
Go语言自定义二进制文件的读写操作
虽然Go语言的 encoding/gob 包非常易用,而且使用时所需代码量也非常少,但是我们仍有可能需要创建自定义的二进制格式。自定义的二进制格式有可能做到最紧凑的数据表示,并且读写速度可以非常快。 不过,在实...
Go语言二进制文件的读写操作
Go语言的二进制(gob)格式是一个自描述的二进制序列。从其内部表示来看,Go语言的二进制格式由一个 0 块或者更多块的序列组成,其中的每一块都包含一个字节数,一个由 0 个或者多个 typeId-typeSpecification 对...
Go语言纯文本文件的读写操作
Go语言提供了很多文件操作的支持,在不同场景下,有对应的处理方式,本节我们来介绍一下文本文件的读写操作。 写纯文本文件 由于Go语言的 fmt 包中打印函数强大而灵活,写纯文本数据非常简单直接,示例代码如下...
gorm FirstOrCreate和受影响行数
FirstOrCreate 获取第一个匹配的记录,或创建一个具有给定条件的新记录(仅适用于struct, map条件) db.Where(User{Name: "Jinzhu"}).FirstOrCreate(&user) 代码案例: func (tsu *TopicSignUp) Topic...
Go语言JSON文件的读写操作
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个...