Switch language
zh
Switch theme
Light

Buffer-String()-和-Buffer-String()

b1 := bytes.Buffer{} // 非指针
b2 := bytes.NewBuffer([]byte{}) // 指针
b3 := &bytes.Buffer{} // 指针, 等同于 b2

b1.WriteString("abc")
b2.WriteString("abc")

fmt.Println(b1) // {[97 98 99] 0 0}
fmt.Println(b1.String()) // abc
fmt.Println(b2) // abc

原因: *Buffer 有方法 String(), Buffer 没有 String() 方法.

  • fmt.Println(b1), 就是 fmt 将 b1 按普通结构体进行输出: 分别输出各项
  • fmt.Println(b1.String()), 调用了 *Buffer 的 String() 方法
  • fmt.Println(b2), 自动调用 *Buffer 的 String() 方法

参考自 stackoverflow

🍀