好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 關(guān)于Golang中range指針數(shù)據(jù)的坑詳解

關(guān)于Golang中range指針數(shù)據(jù)的坑詳解

熱門標(biāo)簽:浙江高速公路地圖標(biāo)注 學(xué)海導(dǎo)航地圖標(biāo)注 地圖標(biāo)注的汽車標(biāo) 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 中國地圖標(biāo)注省會高清 南通如皋申請開通400電話 廣州呼叫中心外呼系統(tǒng) 高德地圖標(biāo)注口訣 西部云谷一期地圖標(biāo)注

前言

在Golang中使用 for range 語句進(jìn)行迭代非常的便捷,但在涉及到指針時就得小心一點了。

下面的代碼中定義了一個元素類型為 *int 的通道 ch :

package main

import (
 "fmt"
)

func main() {
 ch := make(chan *int, 5)
 
 //sender
 input := []int{1,2,3,4,5}
 
 go func(){
  for _, v := range input {
   ch - v
  }
  close(ch)
 }()
 //receiver
 for v := range ch {
  fmt.Println(*v)
 }
}

在上面代碼中,發(fā)送方將 input 數(shù)組發(fā)送給 ch 通道,接收方再從 ch 通道中接收數(shù)據(jù),程序的預(yù)期輸出應(yīng)該是:

現(xiàn)在運(yùn)行一下程序,得到的輸出如下:

很明顯,程序并沒有達(dá)到預(yù)期的結(jié)果,那么問題出在哪里呢?我們將代碼稍作修改:

//receiver
  for v := range ch {
    fmt.Println(v)
  }

得到如下輸出:

0x416020
0x416020
0x416020
0x416020
0x416020

可以看到,5次輸出變量 v ( *int )都指向了同一個地址,返回去檢查一下發(fā)送部分代碼:

for _, v := range input {
  ch - v
}

問題正是出在這里,在 for range 語句中, v 變量用于保存迭代 input 數(shù)組所得的值,但是 v 只被聲明了一次,此后都是將迭代 input 出的值賦值給 v , v 變量的內(nèi)存地址始終未變,這樣再將 v 的地址發(fā)送給 ch 通道,發(fā)送的都是同一個地址,當(dāng)然無法達(dá)到預(yù)期效果。

解決方案:

引入一個中間變量,每次迭代都重新聲明一個變量 temp ,賦值后再將其地址發(fā)送給 ch :

for _, v := range input {
  temp := v
  ch - temp
}

抑或直接引用數(shù)據(jù)的內(nèi)存(推薦,無需開辟新的內(nèi)存空間):

for k, _ := range input {
  c - input[k]
}

再次運(yùn)行,就可看到預(yù)期的效果。以上方案是用于討論 range 語句帶來的問題,當(dāng)然,平時還是盡量避免使用指針類型的通道。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Go語言應(yīng)該什么情況使用指針
  • Go 語言的指針的學(xué)習(xí)筆記
  • Go語言中結(jié)構(gòu)體方法副本傳參與指針傳參的區(qū)別介紹
  • golang中值類型/指針類型的變量區(qū)別總結(jié)
  • golang方法中receiver為指針與不為指針的區(qū)別詳析
  • Go語言中的指針運(yùn)算實例分析
  • Go語言指針訪問結(jié)構(gòu)體的方法
  • Go語言指針使用分析與講解

標(biāo)簽:吐魯番 保定 貴州 許昌 東營 德宏 常州 曲靖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于Golang中range指針數(shù)據(jù)的坑詳解》,本文關(guān)鍵詞  關(guān)于,Golang,中,range,指針,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于Golang中range指針數(shù)據(jù)的坑詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于關(guān)于Golang中range指針數(shù)據(jù)的坑詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 女班长臭玉足踩踏榨精| 国产自产| 国产三级观看久久| 美女丝袜在线观看一区二区| 99re在线这里只有精品| 老女人性生交大片免费| 先锋资源av| 免费看国产片在线观看| 欧美壮熊gay粗大free| 泡菜电影| 粉嫩紧窄的蜜一开一| 大尺度直播app| 温声细语| h文啊| 亚洲三区| 免费一级婬片色情毛片大全| ZZJJ国产精品一区二区| 香蕉伊思人在钱国产在线| 少年啊兵| 五月天天爱| 欧美porno| 勾搭足浴女技师国产在线| 女性突然像尿了一样出了一股水| 中国性xxxxx极品奶水| 久久看片网| 90人伦影院A片在线观看| 国漫3动漫入口一区二区| 男男电影体液无删减版视频 | 白丝玉足娇喘抽搐喷潮免费观看| 777色视频| 别揉我胸啊嗯动漫网站| 91久久久久精品无码一区二哈区| 免费黄色片软件| 国产乱人伦精品一区二区| 女人19毛片水真多18精品| 韩国三级《瑜伽教练》电影| 欧美特黄视频| 印度一级特黄大片| 双手扶在浴缸边迎合着h| 三毛片| 欧美一区二区影院|