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

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

如何傳遞一個創建二維數組的切片

如何傳遞一個創建二維數組的切片

Go
慕萊塢森 2023-04-04 17:06:02
我無法在 func 中傳遞一段二維字符串數組:這是我的游樂場Golang游樂場package mainimport (    "fmt")func main() {    board := [2][3]string{        {"O", "_", "O"},        {"X", "O", "_"},    }    printBoard(board[:][:])}func printBoard(board [][]string){    for _, line := range board {        for _, cell := range line {            fmt.Printf("%s", cell)        }        fmt.Println()    }}它說cannot use board[:][:] (type [][3]string) as type [][]string in argument to printBoard我沒有設法更正它 printBoard(board[:][:])。我嘗試刪除調用中的一個/兩個分號,但也沒有用。如果可能,我不想指定任何長度
查看完整描述

1 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

在 go 中,數組有固定的大小,與切片相反,所以這里你需要指定數組的大小作為參數,否則你會得到這個錯誤:

prog.go:13:12: cannot use board (type [2][3]string) as type [][]string in argument to printBoard

這是固定的:

package main


import (

? ? "fmt"

)


func main() {

? ? board := [2][3]string{

? ? ? ? {"O", "_", "O"},

? ? ? ? {"X", "O", "_"},

? ? }


? ? printBoard(board)

}


func printBoard(board [2][3]string){

? ? for _, line := range board {

? ? ? ? for _, cell := range line {

? ? ? ? ? ? fmt.Printf("%s", cell)

? ? ? ? }

? ? ? ? fmt.Println()

? ? }

}

產出


O_O

XO_

我不確定您為什么決定使用數組,但總的來說,只要有可能,您應該更喜歡使用切片而不是數組,因為它們更靈活、更簡潔且更不容易出錯。


這是使用切片的實現:


package main


import (

? ? "fmt"

)


func main() {

? ? board := [][]string{

? ? ? ? {"O", "_", "O"},

? ? ? ? {"X", "O", "_"},

? ? }


? ? printBoard(board)

}


func printBoard(board [][]string){

? ? for _, line := range board {

? ? ? ? for _, cell := range line {

? ? ? ? ? ? fmt.Printf("%s", cell)

? ? ? ? }

? ? ? ? fmt.Println()

? ? }

}

請注意,您不需要更改邏輯,也不需要再在任何地方指定大小。


查看完整回答
反對 回復 2023-04-04
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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