RosettaCodeData/Task/Call-an-object-method/Go/call-an-object-method-2.go

30 lines
413 B
Go

package box
import "sync/atomic"
var sn uint32
type box struct {
Contents string
secret uint32
}
func New() (b *box) {
b = &box{secret: atomic.AddUint32(&sn, 1)}
switch sn {
case 1:
b.Contents = "rabbit"
case 2:
b.Contents = "rock"
}
return
}
func (b *box) TellSecret() uint32 {
return b.secret
}
func Count() uint32 {
return atomic.LoadUint32(&sn)
}