Rumah >pembangunan bahagian belakang >Golang >Penyelesaian ralat Golang: Bagaimana untuk menyelesaikan ralat tidak boleh diserahkan kepada ralat
Golang ialah bahasa pengaturcaraan yang sangat popular yang menarik lebih ramai pembangun dengan kecekapan, kesederhanaan dan penyelenggaraan yang mudah. Walau bagaimanapun, semasa proses pembangunan, kami pasti akan menghadapi beberapa ralat dan pengecualian. Salah satu ralat biasa ialah ralat tidak boleh ditetapkan Dalam artikel ini kita akan meneroka punca dan cara menyelesaikan masalah.
1. Sebab
Di Golang, apabila memberikan nilai kepada pembolehubah, operator = sering digunakan untuk tugasan. Walau bagaimanapun, jika kami menggunakan operator ini dalam keadaan yang tidak sesuai, ralat tidak boleh ditetapkan akan berlaku.
Secara khusus, kaedah yang biasa digunakan di Golang adalah untuk menetapkan nilai kepada pembolehubah Walau bagaimanapun, dalam beberapa kes, kita perlu mendapatkan penunjuk kepada pembolehubah dan kemudian memberikan nilai kepada penunjuk untuk mengubah suai nilai pembolehubah. Dan jika kita menggunakan operasi ini dalam senario yang tidak sesuai, ia adalah mudah untuk menyebabkan ralat tidak boleh ditetapkan.
2. Contoh mudah
Lihat contoh mudah:
package main import ( "fmt" ) func main() { x := 10 y := 20 fmt.Printf("原始变量值,x = %d,y = %d ", x, y) //尝试交换变量值 x = y y = x fmt.Printf("交换后的变量值,x = %d,y = %d ", x, y) }
Dalam kod di atas, kami menentukan dua pembolehubah x dan y, dan kami ingin menukar nilainya. Walau bagaimanapun, selepas cuba menggunakan x = y dan y = x, kami mendapati pertukaran tidak berjaya dan ralat dilaporkan:
# command-line-arguments ./main.go:13:3: cannot assign to x ./main.go:14:3: cannot assign to y
Ini adalah sebab untuk ralat tidak boleh ditetapkan. Di bawah ini kami akan menerangkan cara menyelesaikan masalah ini.
3. Penyelesaian
Mengikut mesej ralat bahawa pembolehubah tidak boleh ditukar, kita akan dapati bahawa data pembolehubah tidak boleh ditukar secara langsung, kita perlu menggunakan pembolehubah perantara.
Berikut ialah kod yang diubah suai:
package main import ( "fmt" ) func main() { x := 10 y := 20 fmt.Printf("原始变量值,x = %d,y = %d ", x, y) temp := x x = y y = temp fmt.Printf("交换后的变量值,x = %d,y = %d ", x, y) }
Berdasarkan kod asal, kami menambah pembolehubah temp Sebelum menukar nilai x dan y, kami menetapkan nilai pembolehubah x kepada temp, dengan itu memastikan. Nilai x dan y tidak akan dikelirukan, sekali gus mencapai tujuan pertukaran.
Selain itu, jika kita ingin mengendalikan penunjuk, kita perlu menggunakan simbol & untuk mendapatkan alamat pembolehubah, dan kemudian beroperasi pada penunjuk.
Berikut ialah contoh mudah:
package main import ( "fmt" ) func main() { x := 10 y := &x fmt.Println("原始变量值,x =", x) //修改指向变量的指针的值 *y = 20 fmt.Println("改变后的变量值,x =", x) }
Dalam contoh ini, kami mentakrifkan pembolehubah x dan penunjuk y, yang menunjuk ke alamat memori x. Kemudian, kami mengubah suai nilai penunjuk kepada pembolehubah, dan akhirnya nilai pembolehubah x.
4. Ringkasan Untuk menyelesaikan masalah ini, kita boleh menggunakan pembolehubah perantaraan untuk melaksanakan pertukaran pembolehubah, menggunakan penunjuk atau operasi alamat untuk mengendalikan nilai pembolehubah, dsb.Atas ialah kandungan terperinci Penyelesaian ralat Golang: Bagaimana untuk menyelesaikan ralat tidak boleh diserahkan kepada ralat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!