Golang中Fmt.Println返回字节数的处理方法

Golang中Fmt.Println返回字节数的处理方法 你好,

我刚开始学习Go语言,使用的第一个函数是fmt.Println()。根据文档说明:“它返回写入的字节数[…]”

能否请你解释一下为什么我会收到一个额外的字节?

package main

import "fmt"

func main() {
    a, _ := fmt.Println("Hello")
    fmt.Println(a)
}

谢谢

4 回复

啊…我的错误。

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

更多关于Golang中Fmt.Println返回字节数的处理方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好,@Coco_Petrut,你能把这个问题标记为已解决吗?

Println 表示该函数会打印一行内容:这包括在末尾写入的 \n

func main() {
    fmt.Println("hello world")
}

在Go语言中,fmt.Println 函数返回写入的字节数和可能发生的错误。当你使用 fmt.Println("Hello") 时,它输出 “Hello” 并加上一个换行符。字符串 “Hello” 包含5个字节,而换行符 \n 是1个字节,因此总字节数为6。

在你的代码中,变量 a 捕获了写入的字节数,然后通过第二个 fmt.Println(a) 输出。第一个 fmt.Println("Hello") 会打印 “Hello” 并换行,然后第二个 fmt.Println(a) 打印 a 的值(即6)并换行。所以,你看到的输出是:

Hello
6

这里的 “6” 是第一个 fmt.Println 调用返回的字节数,不是额外的字节。如果你指的是输出中多了一个数字,那是因为你的代码显式打印了 a

如果你只想输出 “Hello” 而不处理返回的字节数,可以忽略返回值:

package main

import "fmt"

func main() {
    fmt.Println("Hello")
}

这样只会输出:

Hello

如果你需要检查写入的字节数,可以像原始代码那样使用返回值。例如,用于错误处理或日志记录:

package main

import "fmt"

func main() {
    n, err := fmt.Println("Hello")
    if err != nil {
        fmt.Printf("Error: %v\n", err)
    } else {
        fmt.Printf("Bytes written: %d\n", n)
    }
}

输出:

Hello
Bytes written: 6

总之,返回的字节数包括字符串内容和自动添加的换行符。你的代码行为是符合预期的。

回到顶部