在Go

时间:2016-12-18 00:13:00

标签: go printf

有没有办法在格式字符串中写动词,什么都不输出,即使有些值提供给Printf / Sprintf / Fprintf?换句话说,这个代码没有输出s的值吗?

fmt.Printf(s, 42)

在C中,答案很简单:空字符串,因为the superfluous value is ignored。在Go中,空格式字符串指向输出%!(EXTRA int=42)。我认为这是件好事,因为格式字符串很可能是错误的。 Python甚至抛出" TypeError:并非在字符串格式化期间转换所有参数#34;在那种情况下。但如果我们真的想吞噬,忽视,跳过,取消价值观,我们怎能说服Printf我们的良好意图?

如果值是字符串,则很容易:截断为零:

    fmt.Printf("nothing%.0s here", "foul")

你甚至可以省略该动词中的0,我在挖掘a bash version of my question后意识到。但如果值是一个数字呢?

如果你想知道,为什么不简单地省略多余的值:上下文是只能触摸格式字符串,作为函数的参数。函数体向格式提供某些预定类型的值,例如在this simplified playground example中。通常,传入的格式想要表示值,但有时您可能想要忽略它。当然,这个函数可以长大并接受一个接口而不是一个格式字符串,但我只是想知道Printf是否可以像在C中一样将它拉出来。

1 个答案:

答案 0 :(得分:1)

这可能不是您正在寻找的,但值得查看np.dot(pca[:, 1], pca[0, :]) # result = 10 np.dot(pca[:, [1]], pca[[0], :]) # result = array([[2, 4], [4, 8]]) 包。然后,您可以使用text/template定义模板,然后传入包含Parse("{{.Name}} items are made of {{.Material}}")Execute键的map[string]string"Name"。这样做的另一个好处是格式字符串也可以排列值的输出顺序。