type Person struct {
	Name    string
	Age     int
	Friends []string
}

func (p *Person) SetName(name string) {
	p.Name = name
	println(p.Name)
}

func (p *Person) SetAge(age int) {
	age = age + 5
	p.Age = age
	println(p.Age)
}

func (p *Person) AddFriends(args ...string) {
	p.Friends = append(p.Friends, args...)
}

type M int

func (m M) Foo() {
	println("foo", m)
}

p := Person{
	Name: "bar",
	Age:  30,
}

p.Name, p.Age = "bar2", 31

p.SetName("foo")
p.SetAge(32)
p.AddFriends("a", "b", "c")

a := int32(0)
m := M(a)
m.Foo()

println(p.Name)
println(p.Age)
println(p.Friends)
println(m)
