将固定长度的填充行写入文件Go

时间:2018-10-11 13:48:06

标签: go byte padding

对于打印来说,合理且固定的长度似乎是每个人都在问的问题,并且我发现了很多示例,例如...

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填充

问题

那么,在写入文件时如何实现呢?

1 个答案:

答案 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?

查看相关问题:Format a Go string without printing?