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

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

如何將二維數組分配給切片切片?

如何將二維數組分配給切片切片?

Go
互換的青春 2022-06-21 16:54:02
在下面的代碼中:package mainimport "fmt"func main() {    fmt.Println("Simple array")    arrayInt := []int{1, 2, 3, 4}    fmt.Println(arrayInt, "\n")    fmt.Println("Simple slice")    sliceInt := arrayInt[:]    fmt.Println(sliceInt, "\n")    fmt.Println("Array of arrays")    twoDimArray := [3][4]int{        {1, 1, 1, 1},        {2, 2, 2, 2},        {3, 3, 3, 3},    }    fmt.Println(twoDimArray, "\n")    fmt.Println("Array of slices")    var arrayOfSlice [3][]int    for i, _ := range twoDimArray {        arrayOfSlice[i] = twoDimArray[i][:]    }    fmt.Println(arrayOfSlice, "\n")    fmt.Println("Slice of arrays")    var sliceOfArrays [][4]int    sliceOfArrays = twoDimArray[:]    fmt.Println(sliceOfArrays, "\n")    fmt.Println("Slice of slices")    var sliceOfSlice [][]int}twoDimArray需要在sliceOfSlice不創建底層數組(實際數據)的情況下分配給sliceOfSlice如何分配twoDimArray給sliceOfSlice?
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

twoDimArray有元素類型[4]int并且sliceOfSlice有元素類型[]int。這些類型是不同的,因此不能有與 .sliceOfSlice共享支持數組的值twoDimArray。需要一個新的后備數組twoDimArray,但它的元素可能是與 的元素共享后備數組的切片值twoDimArray,或者更具體地說,將 的元素twoDimArray作為后備數組。


您必須使用循環并切片外部數組的每個數組元素,沒有速記:


fmt.Println("Slice of slices")

var sliceOfSlice [][]int

sliceOfSlice = make([][]int, len(twoDimArray))

for i := range twoDimArray {

    sliceOfSlice[i] = twoDimArray[i][:]

}

fmt.Println(sliceOfSlice, "\n")

這將輸出(在Go Playground上嘗試):


Slice of slices

[[1 1 1 1] [2 2 2 2] [3 3 3 3]] 


查看完整回答
反對 回復 2022-06-21
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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