Go 1.16后ioutil.ReadAll等函数已弃用,替代标准库有哪些?
Go 1.16+ 替代io/ioutil弃用函数的标准库方案
从Go 1.16开始,io/ioutil包被弃用,其核心函数的替代方案都可在标准库的io和os包中找到:
ioutil.ReadAll → io.ReadAll
io.ReadAll完全替代ioutil.ReadAll的功能,用法完全一致:
// 替代前 data, err := ioutil.ReadAll(reader) // 替代后 data, err := io.ReadAll(reader)
ioutil.ReadFile → os.ReadFile
os.ReadFile直接提供读取文件内容的功能,无需导入额外包:
// 替代前 data, err := ioutil.ReadFile("example.txt") // 替代后 data, err := os.ReadFile("example.txt")
ioutil.ReadDir → os.ReadDir
os.ReadDir返回[]os.DirEntry(而非原[]os.FileInfo),如果需要获取原FileInfo结构的信息,可调用DirEntry.Info()方法:
// 替代前 files, err := ioutil.ReadDir("./") // 替代后 entries, err := os.ReadDir("./") // 如需获取FileInfo: for _, entry := range entries { info, err := entry.Info() // 处理info逻辑 }
注意:所有替代函数的行为与原函数保持一致,仅归属包发生变更,迁移时直接替换包路径和函数名即可(
ReadDir需注意返回值类型的差异)。
内容的提问来源于stack exchange,提问作者Vivian K. Scott
相关产品推荐
相关产品推荐

