3 回答
TA贡献1845条经验 获得超8个赞
以nemo的答案为基础:
println是语言内置的功能。它在规范的Bootstrapping部分中。从链接:
当前的实现提供了一些自举过程中有用的内置函数。这些功能已记录完整,但不能保证始终保留该语言。他们不返回结果。
Function Behavior
print prints all arguments; formatting of arguments is implementation-specific
println like print but prints spaces between arguments and a newline at the end
因此,它们对开发人员很有用,因为它们缺少依赖项(已内置到编译器中),但在生产代码中却没有。同样重要的是要注意print并向println 而stderr不是向stdout。
fmt但是,由提供的系列是在生产代码中构建的。stdout除非另有说明,否则它们会向预测地报告。他们更灵活(fmt.Fprint*可向任何报告io.Writer,例如os.Stdout,os.Stderr或者甚至是一个net.Conn类型。),并没有实现特定的。
大多数负责输出的包都具有fmt依赖项,例如log. 如果您的程序要在生产中输出任何内容,fmt则很可能是您想要的软件包。
TA贡献2016条经验 获得超9个赞
我可以在这里看到区别:
rangeOverIntsAndStrings(1, 5)
func rangeOverIntsAndStrings(args ...interface{}) {
for _, v := range args {
println(v)
}
}
// 输出
(0x108f060,0x10c5358)
(0x108f060,0x10c5360)
对比
func rangeOverIntsAndStrings(args ...interface{}) {
for _, v := range args {
fmt.Println(v)
}
}
// 输出
1
5
- 3 回答
- 0 关注
- 339 浏览
添加回答
举报