我正在打印指针地址sync.WaitGroup,它们都不同。为什么?
func Run() *sync.WaitGroup {
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
fmt.Printf("goroutine %p\n", &wg)
time.Sleep(5 * time.Second)
fmt.Println("wokeup")
}()
fmt.Printf("returning %p\n", &wg)
return &wg
}
func main() {
runtime.GOMAXPROCS(3)
wg := Run()
fmt.Printf(" main %p\n", &wg)
wg.Wait()
}
典型的输出显示函数内部的地址Run与main. 我希望那是一样的,n'est-ce pas ?
returning 0xc0840045c0
main 0xc084000038
goroutine 0xc0840045c0
wokeup
函数式编程
回首忆惘然
相关分类