2 回答
TA贡献1828条经验 获得超3个赞
好吧,他们会有不同的行为。本质上,如果您想使用结构上的方法修改状态,那么您将需要一个指针,否则一个值就可以了。也许一个例子会更好:
package main
import "fmt"
type test_struct struct {
Message string
}
func (t test_struct)Say (){
fmt.Println(t.Message)
}
func (t test_struct)Update(m string){
t.Message = m;
}
func (t * test_struct) SayP(){
fmt.Println(t.Message)
}
func (t* test_struct) UpdateP(m string) {
t.Message = m;
}
func main(){
ts := test_struct{}
ts.Message = "test";
ts.Say()
ts.Update("test2")
ts.Say() // will still output test
tsp := &test_struct{}
tsp.Message = "test"
tsp.SayP();
tsp.UpdateP("test2")
tsp.SayP() // will output test2
}
你可以在这里运行它去游乐场
TA贡献1757条经验 获得超8个赞
假设您知道指针和值之间的一般区别:
第一种方法分配一个结构并将指向该分配结构的指针分配给变量p1
。
p1 := &StructName{}
第二种方式分配一个结构体并为变量分配一个值(结构体本身)s
。然后可以将指向该结构的指针分配给另一个变量(p2
在以下示例中)。
s := StructName{} p2 := &s
- 2 回答
- 0 关注
- 136 浏览
添加回答
举报