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.

Reply via email to