第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

通過引用傳遞和修改 2d 切片

通過引用傳遞和修改 2d 切片

Go
紫衣仙女 2023-06-26 15:10:35
我試圖弄清楚如何通過引用更改多維切片。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ù)內(nèi)的矩陣二維切片changeMatrixByReference?我預(yù)計printMatrix第二次運行時matrix[0][0]會變成3。
查看完整描述

1 回答

?
jeck貓

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


查看完整回答
反對 回復(fù) 2023-06-26
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號