文件读写
runtime.caller
os模块简介
在使用os.Getwd()方法时,在vscode打开文件夹和直接打开go源文件执行结果是不同的.
这一问题的根本原因在于工作目录不同所导致,
file是什么,
os.open方法,
open方法是对openFile的封装,以O_RDONLY模式,
在使用file.read方法获取文件内容时,遇到EOF,EOF是什么?
- EOF 不是错误:
io.EOF是一个预定义的错误,表示正常到达文件末尾
关于runtime.caller和os.Executable的选择:
使用runtime.caller当:
- 需要获取源代码位置信息
- 调试和日志记录
- 开发时加载相对路径的资源文件
使用os.executable当:
- 需要获取可执行文件位置
- 生产环境中定位配置文件
- 创建相对于可执行文件的路径
读取文件内容
方法1,按字节读取
方法2,
方法3,按行读取
总结,
对于一般文件,可一次性读取文件内容,
对于大文件,可选择按字节读取,防止内存溢出
分析readAll源码,
go
1
2
3
b = append(b, 0)[:len(b)]是什么含义呢?
append函数用于向切片追加元素,用于扩容的小技巧?
go
1
2
3
4
5
6
7
8
func main() {nums := []int{1, 2, 3, 4, 5}nums = append(nums, 0)[:5]fmt.Println(nums)}