亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的 go 函數參數在調用函數之前和函數內部的大小不同?

為什么我的 go 函數參數在調用函數之前和函數內部的大小不同?

Go
千萬里不及你 2022-06-13 10:37:07
作為測試 Golang 的一部分,我最終遇到了障礙,所以我是新手。我編寫了一個快速玩具程序來搜索字符串列表中的模式,我想同時進行。我編寫了一個search(data *[]string, input_string *string, channel chan<- []string)函數,使用一個通道將過濾后data的結果發回。但是,data在我將它傳遞給函數之前,它的大小似乎有所不同,并且在函數內部: inside search,它的大小非常小,而且不正確。完整的代碼在那里:https ://gitlab.com/jiehong/kata_test_language/-/blob/master/wiki.go#L39 ,所以你可以測試它?;旧?,我啟動了一個 goroutine 列表,并一個接一個地從他們自己的頻道中檢索它們的結果:var channels [](chan []string)for _, chunk := range chunks {    channel := make(chan []string, 1)    channels = append(channels, channel)    go search(&chunk, &input_string, channel)}var filtered_data []stringfor _, channel := range channels {    part_filtered := <-channel    filtered_data = append(filtered_data, part_filtered...)}但是chunk,雖然在循環內有效,但在search處理它時似乎是空的。我在這里做錯了什么?
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

問題是search需要一個*[]string. 更改它以[]string修復它。

這被沃爾克表示為“也”,但這是修復。

正如 hmm 所指出的,這可能與https://github.com/golang/go/wiki/CommonMistakes#using-goroutines-on-loop-iterator-variables相關聯。

不過, Runninggo vet wiki.go并沒有就這個問題發出警告。


查看完整回答
反對 回復 2022-06-13
  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號