go 语言 对指针类型接收者本身赋值
r
是指针类型接收者,可以对其进行解引赋值。结构体的0值
不是nil
,而是其各个成员的0值
package main
import "fmt"
func main() {
newReader()
}
type reader struct {
buf []byte
r, w int
}
func newReader() {
r := new(reader)
fmt.Println(r) // &{[] 0 0}
r.reset(make([]byte, 5))
fmt.Println(r) // &{[0 0 0 0 0] -1 -1}
}
func (r *reader) reset(buf []byte) {
*r = reader{buf: buf, r: -1, w: -1}
}