小编常晓龙*_*常晓龙的帖子

t和*t之间的差异

package main

import "fmt"

type TT struct {
    a int
    b float32
    c string
}

func (t *TT) String() string {
    return fmt.Sprintf("%+v", *t)
}

func main() {
    tt := &TT{3, 4, "5"}
    fmt.Printf(tt.String())
}
Run Code Online (Sandbox Code Playgroud)

代码可以很好地工作.但是,如果我String按照以下方式更改方法,则会导致死循环.不同之处在于*t被替换为t.为什么?

func (t *TT) String() string {
    return fmt.Sprintf("%+v", t)
}
Run Code Online (Sandbox Code Playgroud)

stack-overflow string methods pointers go

1
推荐指数
1
解决办法
207
查看次数

标签 统计

go ×1

methods ×1

pointers ×1

stack-overflow ×1

string ×1