Apa yang sedang terjadi disini?
package main
import "fmt"
func main() {
myArray :=[...]int{12,14,26} ;
fmt.Println(myArray)
myArray :=[...]int{11,12,14} //error pointing on this line
fmt.Println(myArray) ;
}
Ini melempar kesalahan yang mengatakan
no new variables on left side of :=
Apa yang saya lakukan adalah menugaskan ulang nilai ke variabel yang sudah dideklarasikan.
variables
go
colon-equals
Rune
sumber
sumber
myArray,x = [...]int{11,12,14},3
Jawaban:
Hapus
colon :
dari pernyataan kedua saat Anda memberikan nilai baru ke variabel yang ada.colon :
digunakan ketika Anda melakukan deklarasi singkat dan tugas untuk pertama kalinya seperti yang Anda lakukan dalam pernyataan pertama Anda yaitumyArray :=[...]int{12,14,26}
.sumber
Ada dua jenis operator penugasan di go
:=
dan=
. Mereka secara semantik setara (sehubungan dengan penugasan) tetapi yang pertama juga merupakan "deklarasi variabel pendek" ( http://golang.org/ref/spec#Short_variable_declarations ) yang berarti bahwa di sebelah kiri kita perlu memiliki setidaknya a deklarasi variabel baru agar benar.Anda dapat mengubah yang kedua menjadi pernyataan tugas sederhana
:=
->=
atau Anda dapat menggunakan variabel baru jika tidak masalah dengan algoritme Anda.sumber
:=
tidak bisa digunakan dengan_
? misalnya_ := someFunc()
Sebagai catatan tambahan, deklarasi ulang hanya dapat muncul dalam deklarasi singkat multi-variabel
Mengutip dari spesifikasi Bahasa:
Berikut adalah contoh yang sangat bagus tentang deklarasi ulang variabel di golang: https://stackoverflow.com/a/27919847/4418897
sumber
Seperti yang dinyatakan oleh komentator sebelumnya,
:=
adalah jenis pendek dan / atau bentuk pendek dari deklarasi variabel .Jadi dalam pernyataan di atas Anda melakukan dua hal.
Bagian kedua dari kode Anda gagal, karena apa yang Anda lakukan di sini:
Apakah RE-mendeklarasikan variabel yang ada myArray, yang sudah berisi nilai integer.
Ini bekerja:
Karena, ini menugaskan array integer ke variabel yang ada (pra-deklarasikan / diinisialisasi).
sumber