对于打印来说,合理且固定的长度似乎是每个人都在问的问题,并且我发现了很多示例,例如...
package main
import "fmt"
func main() {
values := []string{"Mustang", "10", "car"}
for i := range(values) {
fmt.Printf("%10v...\n", values[i])
}
for i := range(values) {
fmt.Printf("|%-10v|\n", values[i])
}
}
情况
但是,如果我需要写入固定长度字节的文件怎么办?
例如:如果我有要求说明该情况,请将此行写入必须为32个字节的文件,该文件必须左对齐并在右边用0填充
问题
那么,在写入文件时如何实现呢?
答案 0 :(得分:2)
与fmt.PrintXX()
函数类似的函数,以F
开头的函数,形式为fmt.FprintXX()
。这些变体将结果写入io.Writer
,也可能是os.File
。
因此,如果您有要直接指向文件的fmt.Printf()
语句,只需将其更改为调用fmt.Fprintf()
即可,并将文件作为第一个参数传递:
var f *os.File = ... // Initialize / open file
fmt.Fprintf(f, "%10v...\n", values[i])
如果您研究fmt.Printf()
的实现:
func Printf(format string, a ...interface{}) (n int, err error) {
return Fprintf(os.Stdout, format, a...)
}
它就是这样做的:它调用fmt.Fprintf()
,并传递os.Stdout
作为要写入的输出。
有关如何打开文件,请参见How to read/write from/to file using Go?