Вопрос: Когда receiver делать указателем, а когда значением?
Go
Junior
Без компании
Вопрос: Когда receiver делать указателем, а когда значением?
Ответы
Pointer receiver нужен если:
- метод меняет состояние
- структура большая (избежать копирования)
- нужно единообразие набора методов
```go
package main
import "fmt"
type Counter struct{ N int }
func (c *Counter) Inc() { c.N++ }
func (c Counter) Value() int { return c.N }
func main() {
c := Counter{}
c.Inc() // компилятор сам возьмёт адрес
fmt.Println(c.Value())
}
```
Value receiver подходит для маленьких неизменяемых структур.