1 回答

TA貢獻1801條經驗 獲得超8個贊
不(不適用于此處),每次循環迭代都有新變量(內存地址):
case request := <-runCh:
因為這:=會創建與前一個不同的新變量,所以證明:
package main
import (
"fmt"
"time"
)
func main() {
runCh := make(chan int, 2)
runCh <- 1
runCh <- 2
for i := 1; i <= 2; i++ {
select {
case request := <-runCh:
go func() {
fmt.Println(request, &request)
time.Sleep(200 * time.Millisecond)
fmt.Println(request, &request)
}()
}
}
time.Sleep(500 * time.Millisecond)
}
輸出(request每次循環迭代中的地址不同):
1 0xc0000b8000
2 0xc0000b8008
1 0xc0000b8000
2 0xc0000b8008
請參閱:0xc0000b8000 != 0xc0000b8008
- 1 回答
- 0 關注
- 106 瀏覽
添加回答
舉報