-->

什么是在去fmt.Println()和println()之间的区别(what's the d

2019-07-19 05:20发布

在旅途中,如果我们要打印的东西,我们可以这样做如下:

import "fmt"
func main(){
    fmt.Println("Hello world!")
}

但我发现,一个可以做同样不导入fmt

func main(){
    println("Hello world!")
}

可能有人请解释一下吗?

Answer 1:

println是一个内置函数(到运行时),其可以最终被去除,而fmt包是在标准库,这将持续存在。 见规范关于这一主题。

对于语言开发起来更是得心应手拥有println没有依赖关系,但要走的路是用fmt包或类似的东西( log为例)。

正如你可以在实现中看到的print(ln)函数没有被设计成甚至远程支持不同的输出模式,主要是调试工具。



Answer 2:

要建立在Nemo的答案:

println是语言内置的一个功能。 它是在的自举部分规范 。 从链接:

当前实现提供引导过程中有用的几个内置的功能。 这些功能是为了文档的完整,但不保证留在语言。 他们不返回结果。

 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 

因此,他们对开发人员有用,因为它们缺乏依赖性(被内置到编译器),而不是在生产代码。 还需要注意的是printprintln 报告stderr ,而不是stdout

所提供的家庭fmt ,然而,在建造时,在生产代码。 他们的报告可以预见到stdout ,除非另有说明。 他们是更通用( fmt.Fprint*可向任何报告io.Writer ,如os.Stdoutos.Stderr ,甚至net.Conn型)和不执行特定的。

该负责输出大部分软件包fmt作为依赖,如log 。 如果你的程序将被输出在生产什么, fmt是最有可能需要的数据包。



Answer 3:

至于差, 这是一个例子。

println()打印指针指向功能测试的地址。

fmt.Println()打印的功能的地址。



文章来源: what's the difference between fmt.Println() and println() in go
标签: go println