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 關注
- 161 瀏覽
添加回答
舉報