2 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用整數(shù)切片而不是字符串切片。即 -> .
[]string{"1", "2", "3"}
[]int{1, 2, 3}
類(lèi)型不是值。即 是無(wú)效語(yǔ)句。若要初始化空切片,請(qǐng)省略運(yùn)算符,或使用復(fù)合類(lèi)型文本,或者在這種情況下更好,請(qǐng)使用 的長(zhǎng)度 。
var newArray = []string
=
make
myArray
未使用的塊變量在 Go 中是非法的。即,在循環(huán)中不使用 in,因此會(huì)導(dǎo)致編譯時(shí)錯(cuò)誤。
arr
for i, arr := myArray {
不能將字符串與整數(shù)相乘。即 其中 的類(lèi)型是非法的,將導(dǎo)致編譯時(shí)錯(cuò)誤。
newArray[i] * 2
newArray
[]string
不能更改變量的類(lèi)型。即 如果 是 類(lèi)型,則該語(yǔ)句是非法的,因?yàn)橛?jì)算結(jié)果為 ,并且您無(wú)法賦值給 類(lèi)型的變量。
newArray = newArray[i] * 2
newArray
[]int
newArray[i] * 2
int
int
[]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

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
您的語(yǔ)法有相當(dāng)多的問(wèn)題。你聲明你的數(shù)組是錯(cuò)誤的(你的第一個(gè)數(shù)組將myArray聲明為切片,你的第二個(gè)數(shù)組無(wú)效并且不會(huì)編譯),并且你正在嘗試乘以字符串。您正在聲明 arr 但不使用它,這也會(huì)導(dǎo)致編譯錯(cuò)誤。
此代碼段將使用 ints 執(zhí)行您想要的操作:
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)
另一種無(wú)需先復(fù)制原始陣列的替代方案:
myArray := [3]int{1, 2, 3}
newArray := [3]int{}
for i := range myArray {
newArray[i] = myArray[i] * 2
}
fmt.Println(newArray)
- 2 回答
- 0 關(guān)注
- 117 瀏覽
添加回答
舉報(bào)