结构体指针和结构体区别

type Car struct {
    Name  string
    Color string
}

func (t Car) SetName(name string) {
    t.Name = name
}
func (t *Car) SetColor(color string) {
    t.Color = color
}

测试

func TestCar(t *testing.T) {
    car1 := Car{
        Name:  "张三",
        Color: "白色",
    }
    car1.SetName("张三1")
    car1.SetColor("白色1")
    fmt.Println("car1:", car1)

    car2 := Car{
        Name:  "李四",
        Color: "黄色",
    }
    car2.SetName("李四2")
    car2.SetColor("黄色1")
    fmt.Println("car2:", car2)
}

测试结果

car1: {张三 白色1}
car2: {李四 黄色1}
image.png

如上图
1.指针接收者的方法,无论是变量来调用,还是变量指针来调用,都能更改底层的数据。
2.而值接收者的方法,无论是变量来调用,还是变量指针来调用,都不能更改底层的数据。

你可能感兴趣的:(结构体指针和结构体区别)