我有以下代码https://play.golang.org/p/4mlXMhqpLJ:
package main
import (
"fmt"
)
type A struct {
Name string
}
func (a *A) method(name string) {
a.Name = name
}
func (a *A) name() string {
return a.Name
}
type intt interface {
method(string)
name() string
}
var interfacer = []intt{
&A{},
}
func ExportedMethod(name string) bool {
for _, aa := range interfacer {
fmt.Println("Pre:", aa.name())
aa.method(name)
fmt.Println("Post:", aa.name())
if aa.name() == "Fred" {
return true
}
}
return false
}
func main() {
ExportedMethod("Bob")
ExportedMethod("Frank")
}
由于我的第二个for循环打印Bob,很明显这对于并发使用是不安全的。这是一个简单的例子。实际上,我有更多的结构将满足接口...& B {},& C {},& D {},& E {}等......我需要一种方法来能够循环遍历所有结构,这就是为什么我有一片界面。如何使这个并发使用安全?