当我只期望一条新线并且似乎没有指定前导空间时,为什么会有一个领先的空间

时间:2017-11-05 00:44:53

标签: go

链接:https://play.golang.org/p/1b5MbgIP2N

代码:

package main

import "fmt"

func main() {
    println("his power level is over 9000!!! KAKAROTO")
    println(test(2))
}

func test(x int) int {
    fmt.Println(x, "\n", "new line here")
    fmt.Println("another line here")
    return x + 1
}

由于某些我不知道的原因,在运行该函数时,“new”前面似乎只有一个前导空白字符。这可能是非常明显的事情但发生了什么?我没有看到我明确地在任何地方添加空格

1 个答案:

答案 0 :(得分:2)

documentation for fmt.Println说:

  

总是在操作数之间添加空格,并附加换行符。

有一个领先的空间,因为fmt.Println在“\ n”和“new line here”操作数之间添加了一个空格。

为方便起见,fmt.Println函数在操作数之间添加空格。它节省了在函数的典型使用中添加许多“”操作数。

将代码更改为fmt.Println(x, "\nnew line here"),以避免不必要的空间。