Frequently Asked Questions (FAQ) Should I define methods on values or pointers? https://golang.org/doc/faq#methods_on_values_or_pointers
If some of the methods of the type must have pointer receivers, the rest should too, so the method set is consistent regardless of how the type is used. Peter On Friday, March 24, 2017 at 9:20:06 PM UTC-4, st ov wrote: > > Is it idiomatic to mix-&-match pointer and value method receivers for a > given type? > or in *general*, if a single method requires a pointer receiver than *all > methods* should take a pointer, regardless if a value receiver is > appropriate? > > For example, should Foo.SetVal also be a pointer receiver even though a > value receiver would be acceptable? > https://play.golang.org/p/rd_6BLol8O > > type Foo struct{ > ref []int > val int > } > > // would not set if method receiver is value receiver (foo Foo) > func (foo *Foo) SetRef(ref []int) { > foo.ref = ref > } > func (foo Foo) SetVal(val int) { > foo.val = val > } > > func main() { > foo := Foo{} > foo.SetRef([]int{1,2,3}) > foo.SetVal(1) > > fmt.Printf("%v",foo) // {[1 2 3] 0} > } > > > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.