Strange behaviour of int inside a struct

Viewed 398

Let's say we have this kind of a struct (one of the simplest ever):

type some struct{
    I uint32
}

And we want to have a variable of that type and to atomically increment in for loop (possibly in another goroutine but now the story is different). I do the following:

q := some{0}
for i := 0; i < 10; i++ {
        atomic.AddUint32(&q.I,1) // increment [1]
        fmt.Println(q.I)
}

We're getting what we'd expect, so far so good, but if we declare a function for that type as follows:

func (sm some) Add1(){
    atomic.AddUint32(&sm.I,1)
}

and call this function in the above sample (line [1]) the value isn't incremented and we just get zeros. The question is obvious - why?

This has to be something basic but since I am new to go I don't realize it.

2 Answers
Related