2015-10-29 51 views
0

有没有使用变量索引打印的方法?如何使用索引进行打印?

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

我得到

字符串错误没有实现io.Writer

使用fmt.Println打印变量指标作为文字。

回答

6

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中的格式和写入瓦特它 返回写入的字节数和遇到的任何写入错误。根据格式指定符

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

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

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