mirror of
https://github.com/bootdotdev/fcc-learn-golang-assets.git
synced 2025-12-10 07:11:19 +00:00
48 lines
731 B
Markdown
48 lines
731 B
Markdown
# Pointer Receivers
|
|
|
|
A receiver type on a method can be a pointer.
|
|
|
|
Methods with pointer receivers can modify the value to which the receiver points. Since methods often need to modify their receiver, pointer receivers are *more common* than value receivers.
|
|
|
|
## Pointer receiver
|
|
|
|
```go
|
|
type car struct {
|
|
color string
|
|
}
|
|
|
|
func (c *car) setColor(color string) {
|
|
c.color = color
|
|
}
|
|
|
|
func main() {
|
|
c := car{
|
|
color: "white",
|
|
}
|
|
c.setColor("blue")
|
|
fmt.Println(c.color)
|
|
// prints "blue"
|
|
}
|
|
```
|
|
|
|
## Non-pointer receiver
|
|
|
|
```go
|
|
type car struct {
|
|
color string
|
|
}
|
|
|
|
func (c car) setColor(color string) {
|
|
c.color = color
|
|
}
|
|
|
|
func main() {
|
|
c := car{
|
|
color: "white",
|
|
}
|
|
c.setColor("blue")
|
|
fmt.Println(c.color)
|
|
// prints "white"
|
|
}
|
|
```
|