Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set and get fields in struct's method

Tags:

struct

go

set

get

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

like image 519
nope Avatar asked Aug 04 '12 16:08

nope


1 Answers

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.

like image 72
Zippo Avatar answered Oct 04 '22 09:10

Zippo