After creating a struct like this:
type Foo struct { name string } func (f Foo) SetName(name string) { f.name = name } func (f Foo) GetName() string { return f.name }
How do I create a new instance of Foo and set and get the name? I tried the following:
p := new(Foo) p.SetName("Abc") name := p.GetName() fmt.Println(name)
Nothing gets printed, because name is empty. So how do I set and get a field inside a struct?
Working playground
Commentary (and working) example:
package main import "fmt" type Foo struct { name string } // SetName receives a pointer to Foo so it can modify it. func (f *Foo) SetName(name string) { f.name = name } // Name receives a copy of Foo since it doesn't need to modify it. func (f Foo) Name() string { return f.name } func main() { // Notice the Foo{}. The new(Foo) was just a syntactic sugar for &Foo{} // and we don't need a pointer to the Foo, so I replaced it. // Not relevant to the problem, though. p := Foo{} p.SetName("Abc") name := p.Name() fmt.Println(name) }
Test it and take A Tour of Go to learn more about methods and pointers, and the basics of Go at all.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With