我來自C#背景,并使用IO方法,如和來自命名空間。我有點驚訝地發現Go沒有這些IO操作的便利功能。為了避免代碼重復,我編寫了以下幫助程序。有什么理由不這樣做嗎?File.ReadAllLinesFile.WriteAllLinesSystem.IO// WriteBytes writes the passed in bytes to the specified file. Before writing,// if the file already exists, deletes all of its content; otherwise, creates// the file.func WriteBytes(filepath string, bytes []byte) (err error) { file, err := os.Create(filepath) if err != nil { return err } defer closeWithErrorPropagation(file, &err) _, err = file.Write(bytes) if err != nil { return err } return err}// WriteString writes the passed in sting to the specified file. Before writing,// if the file already exists, deletes all of its content; otherwise, creates// the file.func WriteString(filepath string, text string) (err error) { file, err := os.Create(filepath) if err != nil { return err } defer closeWithErrorPropagation(file, &err) _, err = file.WriteString(text) if err != nil { return err } return err}// WriteLines writes the passed in lines to the specified file. Before writing,// if the file already exists, deletes all of its content; otherwise, creates// the file.func WriteLines(filepath string, lines []string) (err error) { file, err := os.Create(filepath) if err != nil { return err } defer closeWithErrorPropagation(file, &err) for _, line := range lines { _, err := file.WriteString(fmt.Sprintln(line)) if err != nil { return err } } return err}func closeWithErrorPropagation(c io.Closer, err *error) { if closerErr := c.Close(); closerErr != nil && *err == nil { // Only propagate the closer error if there isn't already an earlier error. *err = closerErr }}
1 回答

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
操作系統。寫文件可以處理 和 函數的等效功能:WriteBytes
WriteString
// func WriteBytes(filepath string, bytes []byte) (err error)
err = os.WriteFile("testdata/hello", []byte("Hello, Gophers!"), 0666)
// func WriteString(filepath string, text string) (err error)
text := "Hello, Gophers!"
err = os.WriteFile("testdata/hello", []byte(text), 0666)
并與字符串組合。加盟可以處理:WriteLines
//func WriteLines(filepath string, lines []string) (err error)
lines := []string{"hello", "gophers!"}
err = os.WriteFile("testdata/hello", []byte(strings.Join(lines, "\n")), 0666)
- 1 回答
- 0 關注
- 93 瀏覽
添加回答
舉報
0/150
提交
取消