30 lines
413 B
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)
|
|
}
|