有没有办法在格式字符串中写动词,什么都不输出,即使有些值提供给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中一样将它拉出来。
答案 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"
。这样做的另一个好处是格式字符串也可以排列值的输出顺序。