3 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果矩陣大小未更改,則無需傳入指向切片(或切片)的指針。
因此,您可以簡(jiǎn)化表的創(chuàng)建/初始化,如下所示:
func createTable(size int) (table [][]string) {
table = make([][]string, size)
for i := 0; i < size; i++ {
table[i] = make([]string, size) // create a new row per iteration
for j := 0; j < size; j++ {
table[i][j] = "."
}
}
return
}
table := createTable(5)
和 函數(shù)也得到了簡(jiǎn)化 - 因?yàn)樗鼈円膊恍枰衅羔槪篸rawprint
https://play.golang.org/p/KmwynzUj0I-

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果矩陣的大小是固定的,則可以使用數(shù)組而不是切片 ()。為了防止代碼重復(fù)并簡(jiǎn)化維護(hù),您可以為該矩陣 () 創(chuàng)建所需長(zhǎng)度的類型,并在代碼 () 中使用該類型。[5][5]stringtype myMatrix [5][5]stringfunc printTable(table myMatrix)
如
package main
import (
"fmt"
)
type myMatrix [5][5]string
func main() {
var table myMatrix
for i := 0; i < len(table); i++ {
for j := 0; j < len(table); j++ {
table[i][j] = "."
}
}
table[0][0] = "#"
printTable(table)
}
func printTable(table myMatrix) {
for i := 0; i < len(table); i++ {
fmt.Println(table[i])
}
}
https://play.golang.org/p/Ok0DBGSfJlA

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
按如下方式修改代碼,以便不會(huì)在所有行中獲取相同的值,為每次迭代創(chuàng)建一個(gè)新行,而不是使用相同的行。
package main
import (
"fmt"
)
func main() {
table := make([][]string, 5)
initTable(table)
printTable(table)
drawSym(table)
printTable(table)
}
func drawSym(table [][]string) {
(table)[0][0] = "#"
(table)[1][1] = "%"
}
func initTable(table [][]string) {
for i := 0; i < len(table); i++ {
table[i] = make([]string, len(table))
for j := 0; j < len(table); j++ {
table[i][j] = "."
}
}
}
func printTable(table [][]string) {
for i := 0; i < len(table); i++ {
fmt.Println((table)[i])
}
}
輸出:
[. . . . .]
[. . . . .]
[. . . . .]
[. . . . .]
[. . . . .]
[# . . . .]
[. % . . .]
[. . . . .]
[. . . . .]
[. . . . .]
- 3 回答
- 0 關(guān)注
- 104 瀏覽
添加回答
舉報(bào)