Использование установщика для типа структуры не работает должным образом

Использование функции установки для структуры, но не работает так, как ожидалось:

package main

import "fmt"

type T struct { Val string }

// this setter seems not to work
func (t T) SetVal( s string ) {
        t.Val = s
}

// this setter, using ptr to T, seems to work ok
func (t *T) SetVal2( s string ) {
        (*t).Val = s
}

func main() {
        v := T{"abc"}
        fmt.Println( v )        // prints {abc}
        v.SetVal("pdq")
        fmt.Println( v )        // prints {abc}, was expecting {pdq}!
        v.SetVal2("xyz")
        fmt.Println( v )        // prints {xyz}!
}

Мне не хватает фундаментального понимания - почему SetVal работает?

поведение аналогично настройке значений в , отражайте , которое работает, только если предоставляется указатель на объект, а не сам объект

7
задан Flimzy 29 July 2019 в 07:20
поделиться