Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何使用互斥体记录结构_Go_Mutex - Fatal编程技术网

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)