面试题答案
一键面试在Go语言中,可以使用 type
关键字自定义新的整型类型,示例如下:
type MyInt int
为了在并发场景下安全读写该自定义整型数据,可以使用 sync.Mutex
来实现。以下是一个示例代码:
package main
import (
"fmt"
"sync"
)
type MyInt int
type SafeMyInt struct {
value MyInt
mutex sync.Mutex
}
func (s *SafeMyInt) Get() MyInt {
s.mutex.Lock()
defer s.mutex.Unlock()
return s.value
}
func (s *SafeMyInt) Set(v MyInt) {
s.mutex.Lock()
defer s.mutex.Unlock()
s.value = v
}
这里使用到的并发控制机制是 sync.Mutex
,其原理是通过互斥锁来保证同一时间只有一个协程能够访问被保护的数据。Lock
方法用来获取锁,如果锁已被占用,当前协程会阻塞直到锁可用。Unlock
方法用来释放锁,允许其他协程获取锁并访问数据。在 Get
和 Set
方法中,通过在操作前后分别调用 Lock
和 Unlock
,确保对 MyInt
类型数据的读写操作是线程安全的。