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

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

轉換數組/切片中的項目值

轉換數組/切片中的項目值

Go
慕容森 2022-10-04 19:59:57
我想創建一個新數組,其中每個值是原始數組中相應值的2倍,我的代碼有什么問題?func main() {  myArray := []string{"1", "2", "3"}  var newArray = []string  for i, arr := range myArray {    newArray = newArray[i] * 2  }  fmt.Println(newArray)}
查看完整描述

2 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

  1. 使用整數切片而不是字符串切片。即 -> .[]string{"1", "2", "3"}[]int{1, 2, 3}

  2. 類型不是值。即 是無效語句。若要初始化空切片,請省略運算符,或使用復合類型文本,或者在這種情況下更好,請使用 的長度 。var newArray = []string=makemyArray

  3. 未使用的塊變量在 Go 中是非法的。即,在循環中不使用 in,因此會導致編譯時錯誤。arrfor i, arr := myArray {

  4. 不能將字符串與整數相乘。即 其中 的類型是非法的,將導致編譯時錯誤。newArray[i] * 2newArray[]string

  5. 不能更改變量的類型。即 如果 是 類型,則該語句是非法的,因為計算結果為 ,并且您無法賦值給 類型的變量。newArray = newArray[i] * 2newArray[]intnewArray[i] * 2intint[]int

func main() {

    myArray := []int{1, 2, 3}

    newArray := make([]int, len(myArray))


    for i := range myArray {

        newArray[i] = myArray[i] * 2

    }


    fmt.Println(newArray)

}

https://play.golang.org/p/Tc0-51GiAhS


查看完整回答
反對 回復 2022-10-04
?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

您的語法有相當多的問題。你聲明你的數組是錯誤的(你的第一個數組將myArray聲明為切片,你的第二個數組無效并且不會編譯),并且你正在嘗試乘以字符串。您正在聲明 arr 但不使用它,這也會導致編譯錯誤。


此代碼段將使用 ints 執行您想要的操作:


myArray := [3]int{1, 2, 3}

newArray := myArray // copies the original array to a new one


for i := range myArray { // don't care about the value, only the index

    newArray[i] *= 2  // double the values in the new array

}


fmt.Println(newArray)

另一種無需先復制原始陣列的替代方案:


myArray := [3]int{1, 2, 3}

newArray := [3]int{}


for i := range myArray {

    newArray[i] = myArray[i] * 2

}


fmt.Println(newArray)


查看完整回答
反對 回復 2022-10-04
  • 2 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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