【问题标题】:Write fixed length padded lines to file Go将固定长度的填充行写入文件 Go
【发布时间】:2019-03-16 15:14:52
【问题描述】:

对于打印,合理和固定长度,似乎是每个人都在问的问题,我找到了很多例子,比如......

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 填充到右侧的文件,该怎么办

问题

那么,在写入文件时如何做到这一点?

【问题讨论】:

标签: go byte padding


【解决方案1】:

有与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?

【讨论】:

  • 谢谢大家,认为这有助于我的理解并为我指明了正确的方向。知道要问什么问题会有所帮助。此外,对于其他阅读本文的人,我发现了这些方便的填充功能。 RightPad2Len github.com/DaddyOh/golang-samples/blob/master/pad.go
猜你喜欢
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 2016-01-31
相关资源
最近更新 更多