go for range坑和閉包坑的分析
看程序:
package main
import (
"fmt"
"time"
)
func main() {
str := []string{"I","like","Golang"}
for _, v := range str{
v += "good"
}
for k, v := range str{
fmt.Println(k, v)
}
time.Sleep(1e9)
}
結(jié)果:
0 I
1 like
2 Golang
想一想,為什么。
再看:
package main
import (
"fmt"
"time"
)
func main() {
str := []string{"I","like","Golang"}
for k, v := range str{
fmt.Println(&k, &v)
}
time.Sleep(1e9)
}
結(jié)果:
0xc000012050 0xc00000e1e0
0xc000012050 0xc00000e1e0
0xc000012050 0xc00000e1e0
想一想,為什么。
再看:
package main
import (
"fmt"
"time"
)
func main() {
str := []string{"I","like","Golang"}
for k, v := range str{
str = append(str, "good")
fmt.Println(k, v)
}
time.Sleep(1e9)
}
結(jié)果:
0 I
1 like
2 Golang
想一想, 為什么。
再看:
package main
import (
"fmt"
"time"
)
func main() {
str := []string{"I","like","Golang"}
for k, v := range str{
go func(i int, s string){
fmt.Println(i, s, k, v)
}(k, v)
}
time.Sleep(1e9)
}
結(jié)果:
0 I 2 Golang
1 like 2 Golang
2 Golang 2 Golang
想一想,為什么。
最后再看:
package main
import (
"fmt"
"time"
)
func main() {
str := []string{"I","like","Golang"}
for k, v := range str{
go func(i int, s string){
fmt.Println(i, s, k, v)
}(k, v)
time.Sleep(1e9)
}
time.Sleep(5e9)
}
結(jié)果:
0 I 0 I
1 like 1 like
2 Golang 2 Golang
想一想,為什么。
不多說(shuō)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易比特幣系統(tǒng)錢(qián)包的原理解析
這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易比特幣系統(tǒng)錢(qián)包的原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
golang反向代理設(shè)置host不生效的問(wèn)題解決
在使用golang的httputil做反向代理的時(shí)候,發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象,上游網(wǎng)關(guān)必須要設(shè)置host才行,不設(shè)置host的話(huà),golang服務(wù)反向代理請(qǐng)求下游會(huì)出現(xiàn)http 503錯(cuò)誤,接下來(lái)通過(guò)本文給大家介紹golang反向代理設(shè)置host不生效問(wèn)題,感興趣的朋友一起看看吧2023-05-05
8種超簡(jiǎn)單的Golang生成隨機(jī)字符串方式分享
這篇文章主要為大家詳細(xì)介紹了8種超簡(jiǎn)單的Golang生成隨機(jī)字符串方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
Golang并發(fā)繞不開(kāi)的重要組件之Goroutine詳解
Goroutine、Channel、Context、Sync都是Golang并發(fā)編程中的幾個(gè)重要組件,這篇文中主要為大家介紹了Goroutine的相關(guān)知識(shí),需要的可以參考一下2023-06-06
Go語(yǔ)言輕量級(jí)高性能嵌入式規(guī)則引擎RuleGo使用詳解
這篇文章主要為大家介紹了Go語(yǔ)言輕量級(jí)高性能嵌入式規(guī)則引擎RuleGo使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
深入解析golang中的標(biāo)準(zhǔn)庫(kù)flag
Go語(yǔ)言?xún)?nèi)置的flag包實(shí)現(xiàn)了命令行參數(shù)的解析,flag包使得開(kāi)發(fā)命令行工具更為簡(jiǎn)單,下面通過(guò)本文給大家詳細(xì)介紹下golang中的標(biāo)準(zhǔn)庫(kù)flag相關(guān)知識(shí),感興趣的朋友一起看看吧2021-11-11

