如何使用索引打印?

时间:2015-10-29 13:35:34

标签: go

有没有办法使用变量索引进行打印?

fmt.Fprintf("%[1] %[2] %[3] %[4]", a, b, c, d)

我收到有关

的错误
  

string不实现io.Writer

使用fmt.Println将变量索引打印为文字。

2 个答案:

答案 0 :(得分:5)

  

Package fmt

     

显式参数索引:

     

在Printf,Sprintf和Fprintf中,默认行为是每个   格式化动词以格式化在调用中传递的连续参数。   但是,动词前面的符号[n]表示   第n个单索引参数将被格式化。相同   宽度或精度的'*'之前的符号选择参数   索引保持该值。处理括号内的表达式[n]后,   除非另有说明,否则后续动词将使用参数n + 1,n + 2等   定向。

     

例如,

fmt.Sprintf("%[2]d %[1]d\n", 11, 22)
     

将产生“22 11”

     

func Fprintf

func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
     

Fprintf根据格式说明符格式化并写入w。它   返回写入的字节数和遇到的任何写错误。

     

func Printf

func Printf(format string, a ...interface{}) (n int, err error)
     

Printf根据格式说明符进行格式化并写入标准格式   输出。它返回写入的字节数和任何写入错误   遇到。

Fprintf提供io.Writer或使用Printf。另外,将格式“动词”添加到格式说明符中。例如,

package main

import (
    "fmt"
    "os"
)

func main() {
    a, b, c, d := 1, 2, 3, 4
    fmt.Fprintf(os.Stdout, "%[1]d %[2]d %[3]d %[4]d\n", a, b, c, d)
    fmt.Printf("%[1]d %[2]d %[3]d %[4]d\n", a, b, c, d)
}

输出:

1 2 3 4
1 2 3 4

答案 1 :(得分:1)

fmt.Fprintf有定义:
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
所以你需要提供作家。

对于索引,您可以使用以下格式:"%[2]d %[1]d"