英文:
calling golang println with variable arguments
问题
我有以下代码用于调试目的打印n行。output()函数打印的是args的地址而不是参数。如何修复它?
var outputMax = 10
var outputCnt = 0
func output(args ...interface{}) {
outputCnt++
if outputCnt < outputMax {
println(args)
}
}
func main() {
for i := 0; i < 5; i++ {
output("Value of i is now:", i)
}
}
我将为您提供修复后的代码。修复的方法是使用fmt.Println
函数而不是println
函数,并将args
参数传递给fmt.Println
函数。这样可以正确打印参数的值而不是地址。
修复后的代码如下:
package main
import "fmt"
var outputMax = 10
var outputCnt = 0
func output(args ...interface{}) {
outputCnt++
if outputCnt < outputMax {
fmt.Println(args...)
}
}
func main() {
for i := 0; i < 5; i++ {
output("Value of i is now:", i)
}
}
请尝试运行修复后的代码,看看是否能正确打印参数的值。
英文:
I have the following code to print n lines for debug purposes. output() prints the address of args instead of the parameters. How to fix it ?
var outputMax = 10
var outputCnt = 0
func output(args ...interface{}) {
outputCnt++
if(outputCnt < outputMax) { println(args) }
}
func main() {
for i := 0; i < 5; i++ {
output("Value of i is now:", i)
}
}
答案1
得分: 4
通常调用可变参数函数的方式如下:
func output(args ...interface{}) {
fmt.Println(args...)
}
然而,这样会导致编译错误invalid use of ... with builtin println
。如果改用fmt.Println()
,应该就可以正常工作了。
英文:
The usual way to call a varargs function would be like so:
func output(args ...interface{}) {
println(args...)
}
However, this will give you a invalid use of ... with builtin println
compilation error. If you switch to fmt.Println()
instead, it should work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论