1 回答

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊
切片語(yǔ)法無(wú)法實(shí)現(xiàn)您想要做的事情。您認(rèn)為這x[i][0:n]將為您提供 row 的所有列i。它實(shí)際上做的是將列返回0到nfrom row i。
您必須使用循環(huán)來(lái)獲取一列:
func boardColumn(board [][]char, columnIndex int) (column []char) {
column = make([]char, 0)
for _, row := range board {
column = append(column, row[columnIndex])
}
return
}
您用“行”標(biāo)記的代碼實(shí)際上是我希望提供列的代碼:
win[i] = check(BOARD[0:SIZE][i])
從語(yǔ)義上講,切片索引表示:將i所有元素的第 th 個(gè)元素從零到 SIZE。但是,如前所述,Go 切片的工作方式不同。自己試試:
x := [][]int{{1,2,3},{4,5,6}}
fmt.Println(x[0:2]) // [[1,2,3],[4,5,6]]
fmt.Println(x[0:2][0]) // [1,2,3]
正如您在上面示例x[0:2]的第二行中看到的,返回完整的 2d 切片。因此,取第一個(gè)元素返回該二維切片的第一行。
- 1 回答
- 0 關(guān)注
- 277 瀏覽
添加回答
舉報(bào)