Go closure

go的闭包使用问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package main

import (
"fmt"
"time"
)

func main() {
arr := []string{
"hello",
"world",
"你好",
"世界",
}

for _, item := range arr {
go doSomething(&item)
}
time.Sleep(time.Second)
}

func doSomething(s *string) {
fmt.Printf("addr: %p, value: %s\n", s,*s)
}

// 输出如下:
addr: 0xc000010240, value: 世界
addr: 0xc000010240, value: 世界
addr: 0xc000010240, value: 世界
addr: 0xc000010240, value: 世界