1 回答

TA貢獻1909條經(jīng)驗 獲得超7個贊
要設(shè)置matrix[0][0]
為 3,使用指針取消引用:
(*matrix)[0][0]?=?3
試試這個:
package main
import "fmt"
func main() {
? ? matrix := [][]int{
? ? ? ? {1, 0, 0},
? ? ? ? {1, 0, 0},
? ? ? ? {0, 1, 1},
? ? }
? ? fmt.Println("Before")
? ? printMatrix(matrix)
? ? changeMatrixByReference(&matrix)
? ? fmt.Println("After")
? ? printMatrix(matrix)
}
func changeMatrixByReference(matrix *[][]int) {
? ? (*matrix)[0][0] = 3
}
func printMatrix(matrix [][]int) {
? ? for i := 0; i < len(matrix); i++ {
? ? ? ? for j := 0; j < len(matrix[0]); j++ {
? ? ? ? ? ? fmt.Printf("%d", matrix[i][j])
? ? ? ? }
? ? ? ? fmt.Println("")
? ? }
}
只要您不修改切片頭(例如添加元素時),就不需要指針,通過索引訪問的元素將存儲在支持數(shù)組中,切片頭為您保存一個指針:
嘗試這個:
package main
import "fmt"
func main() {
? ? matrix := [][]int{
? ? ? ? {1, 0, 0},
? ? ? ? {1, 0, 0},
? ? ? ? {0, 1, 1},
? ? }
? ? fmt.Println("Before")
? ? printMatrix(matrix)
? ? changeMatrixByReference(matrix)
? ? fmt.Println("After")
? ? printMatrix(matrix)
}
func changeMatrixByReference(matrix [][]int) {
? ? matrix[0][0] = 3
}
func printMatrix(matrix [][]int) {
? ? for i := 0; i < len(matrix); i++ {
? ? ? ? for j := 0; j < len(matrix[0]); j++ {
? ? ? ? ? ? fmt.Printf("%d", matrix[i][j])
? ? ? ? }
? ? ? ? fmt.Println("")
? ? }
}
輸出:
Before
100
100
011
After
300
100
011
- 1 回答
- 0 關(guān)注
- 166 瀏覽
添加回答
舉報