Go 如何使用互斥体记录结构
我有一个带互斥的结构:Go 如何使用互斥体记录结构,go,mutex,Go,Mutex,我有一个带互斥的结构: package main import ( "fmt" "sync" ) type foo struct { sync.Mutex lastID uint64 nameToID map[string]uint64 } func main() { fmt.Println("Hello, playground") foo2 := foo{lastID: 0,nameToID: map[string]ui
package main
import (
"fmt"
"sync"
)
type foo struct {
sync.Mutex
lastID uint64
nameToID map[string]uint64
}
func main() {
fmt.Println("Hello, playground")
foo2 := foo{lastID: 0,nameToID: map[string]uint64{"name":0}}
fmt.Println(foo2)
}
上面给出了一个go vet警告():
我看到了一个相关的github问题,并且理解了这个警告的必要性,即一般情况下对复制锁发出警告。
我可以通过创建一个省略锁的自定义字符串方法来解决上述问题。
然而,由于带有互斥体的结构似乎很普遍,我想知道是否有更好的/惯用的方法来记录包含互斥体的结构
fmt.Println(&foo2)
或者扩展格式
fmt.Printf("%+v\n", &foo2)
fmt.Printf("%+v\n", &foo2)