社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
type SafeMap struct {
data map[interface{}]interface{}
Lock sync.Mutex
}
func (s *SafeMap) Add(key interface{}, value interface{}) {
s.Lock.Lock()
defer s.Lock.UnLock()
s.data[key] = value
}
B.
type SafeMap struct {
data map[interface{}]interface{}
}
func (s *SafeMap) Add(key interface{}, value interface{}) {
s.data[key] = value
}
C.
var m sync.Map
value, ok = m.LoadOrStore("Tom", 25)
D.
type SafeMap struct {
data map[interface{}]interface{}
ch chan func()
}
var SM *SafeMap
func NewSafeMap() *SafeMap {
if SM == nil {
s := &SafeMap{
data: make(map[interface{}]interface{}),
ch: make(chan func()),
}
go func() {
for {
(<-s.ch)()
}
}()
SM = s
return SM
}
return SM
}
func (s *SafeMap) Add(key interface{}, value interface{}) {
s.ch <- func() {
s.data[key] = value
}
}
func main() {
var c1 chan string = make(chan string, 1)
go func() {
c1 <- "1"
}()
time.Sleep(time.Second)
c1 <- "1" //写操作阻塞
fmt.Println("c1 is", <-c1)
...
}
file,err := os.Open("test.go")
if err != nil {
fmt.Println(err)
return
}
B.
response,err := http.Get("http://helloworld")
if err != nil {
fmt.Println(err)
return
}
C.
file,err := os.Open("test.go")
if file != nil {
defer file.Close()
}
if err != nil {
fmt.Println(err)
return
}
D.
response,err := http.Get("http://helloworld")
if response != nil {
defer response.Body.Close()
}
if err != nil {
fmt.Println(err)
return
}
package main
import (
"log"
"os/exec"
)
func main() {
cmd := exec.Command("sleep", "5")
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
}
ch := make(chan int, 10)
go func(){
for{
//ch被读取时可以有两个值,其中ok为bool类型值,true代表ch为正常channel,false代表ch被关闭。
select {
case val,ok := <- ch:
if !ok {
log.Print("chan ch is closed")
return //退出协程
}
... //处理val的代码
}
}
}()
go func(){
close(ch)
}()
func (f *FileExportController) Post() {
req := f.Ctx.Input.RequestBody
param := &dto.ExportReq{}
log.Debug("", "req strings", string(req))
err := json.Unmarshal(req, ¶m)
if err != nil {
...
return
}
filePath, err := service.ProduceExportFile(param)
if err != nil {
//在错误处理时通过err.Error()函数将有问题的参数无意返回,导致web界面出现警报小框
f.CustomAbort(http.StatusInternalServerError, err.Error())
}
}
11-33:
选择:19、22、24、26、29-31、33-34(9道)
填空:7-12(6道)
判断:13-20(8道)
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!