我對 golang 還很陌生,但在陣列中找到最常見的字串時遇到了麻煩(Windrichting)。它應該是 N 但我的輸出給了我 W(它總是給我最后一個字串所以 Windrichting[6]。有人可以幫忙嗎?
這是我的代碼:
包主
import "fmt"
func main() {
Windrichting := [7]string{"N", "N", "N", "N", "O", "Z", "W"}
windEL, winner := Mostcommon(Windrichting)
fmt.Printf("Mostcommon windrichting: %s\n", windEL)
fmt.Printf("Komt %d x voor\n", winner)
}
func Mostcommon(Windrichting [7]string) (windEL string, winner int) {
var N int
var O int
var Z int
var W int
Windrichtingbase := [4]string{"N", "O", "Z", "W"}
for _, v := range Windrichting {
switch v {
case Windrichtingbase[0]:
N
if N > winner {
N = winner
windEL = "Noord"
}
case Windrichtingbase[1]:
O
if O > winner {
O = winner
windEL = "Oost"
}
case Windrichtingbase[2]:
Z
if Z > winner {
Z = winner
windEL = "Zuid"
}
case Windrichtingbase[3]:
W
if W > winner {
W = winner
windEL = "West"
}
}
}
return windEL, winner
}
輸出
uj5u.com熱心網友回復:
贏家總是 0,你永遠不會更新它。然后在增加方向變數(N、O、Z 和 W)后,您立即用存盤在 win 中的零值覆寫它們。您需要顛倒分配的順序。
就像這個變化:https : //go.dev/play/p/VaJgZcijFdh
另請注意,Go 中的大寫變數意味著它們被匯出
uj5u.com熱心網友回復:
if N > winner {
winner = N
windEL = "Noord"
}
uj5u.com熱心網友回復:
這是一個替代實作。它使用直方圖來收集單詞出現的次數。然后它會逐步遍歷直方圖以找到最常見的單詞。沒有什么是硬編碼的。
https://go.dev/play/p/wTFvNaPRP6B
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393701.html
標籤:去
上一篇:網路正在減慢請求或讀取回應正文
