【问题标题】:need help while tesing println and fmt.println of golang在测试 golang 的 println 和 fmt.println 时需要帮助
【发布时间】:2015-06-27 14:54:00
【问题描述】:

我编写了简单的代码来测试 println 和 fmt.Println,但是当我运行代码时,几乎每次都打印出不同的结果。我试图用谷歌搜索 println 和 fmt.Println 之间的区别,但一无所获。有没有人知道这两个功能的真正区别或优先级或顺序?

代码如下:

package main
import (
    "fmt"
)

func main(){
    println("a")
    fmt.Println("b")
    println("c")
    fmt.Println("d")

    p()
}

func p(){
    println("e")
    fmt.Println("f")
    println("g")
    fmt.Println("h")
}

谢谢!

【问题讨论】:

  • 您为什么对使用println() 感兴趣?这不是语言规范的正式部分,将来可能会消失。见:golang.org/ref/spec#Bootstrapping
  • println("a")后面为什么有分号
  • @koljanep:分号与问题无关:Semicolons

标签: go println gofmt


【解决方案1】:

Builtin functions

func println

func println(args ...Type)

println 内置函数将其参数格式化为 实现特定的方式并将结果写入标准错误。 始终在参数之间添加空格并附加换行符。 Println 对于引导和调试很有用;它不是 保证留在语言中。

Package fmt

func Println

func Println(a ...interface{}) (n int, err error)

Println 使用其操作数和写入的默认格式进行格式化 到标准输出。操作数和 a 之间总是添加空格 附加换行符。它返回写入的字节数和任何 遇到写入错误。

fmt.Println() 使用stdoutprintln() 使用 stderr

正如预期的那样,两个不同用途的不同功能会给出不同的结果。

【讨论】:

  • 为此添加颜色,标准错误和标准输出是两个不同的输出流。无法保证它们在您的终端上显示的顺序。如果您将 fmt.Println 唱到 fmt.Fprintln(os.StdErr,"b") 那么它们将按照您的预期交错
  • 这条评论是答案的重要部分。
【解决方案2】:

最佳实践:只使用fmt.Println("My text...")

不要使用println("My text...")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2010-12-05
    • 2011-08-12
    • 2013-01-18
    • 1970-01-01
    • 2013-10-15
    相关资源
    最近更新 更多