Golang ialah bahasa pengaturcaraan sumber terbuka yang pada asalnya dibangunkan oleh Google. Ciri utamanya termasuk: keselarasan yang cekap, sintaks ringkas dan prestasi cemerlang. Antaranya, fungsi adalah bahagian yang sangat asas dalam pengaturcaraan Golang, dan parameter fungsi juga merupakan konsep teras dalam Golang. Dalam fungsi, kita boleh mengubah suai nilai parameter Tingkah laku ini dipanggil pengubahsuaian parameter. Dalam artikel ini, kami akan memperkenalkan pengubahsuaian parameter di Golang secara terperinci.
1. Kaedah hantaran parameter dalam Golang
Dalam bahasa pengaturcaraan lain, kaedah hantaran parameter biasa termasuk: hantaran nilai dan hantaran rujukan. Dalam pemindahan nilai, pengubahsuaian fungsi bagi parameter tidak akan menjejaskan pembolehubah apabila fungsi dipanggil. Dalam pemindahan rujukan, pengubahsuaian fungsi parameter akan mempengaruhi pembolehubah apabila fungsi dipanggil.
Di Golang, kaedah lulus parameter adalah serupa dengan hantaran rujukan, tetapi hantaran parameter dalam Golang tidak menggunakan penunjuk sepenuhnya. Kaedah lulus parameter di Golang dipanggil nilai lulus, iaitu, nilai pembolehubah itu sendiri diluluskan, tetapi apabila diubah suai di dalam fungsi, nilai pada alamat pembolehubah dikendalikan.
2. Pengubahsuaian parameter di Golang
Di Golang, parameter dalam fungsi boleh dibahagikan kepada dua jenis: jenis nilai pas dan jenis rujukan pas. Apabila parameter jenis nilai dilaksanakan, salinan nilai parameter akan disalin dan kemudian dikendalikan di dalam fungsi, tetapi ini tidak akan menjejaskan nilai pembolehubah asal yang diluluskan apabila fungsi dipanggil. Apabila menghantar parameter jenis rujukan, apabila fungsi dilaksanakan, alamat parameter akan dihantar ke dalam fungsi, dan nilai pembolehubah asal akan dimanipulasi secara langsung melalui alamat, jadi pengubahsuaian dalam fungsi akan menjejaskan nilai pembolehubah asal.
Kaedah lulus parameter di Golang membolehkan kami mengubah suai parameter dengan mudah. Sebagai contoh, kami mentakrifkan pembolehubah rentetan, menghantarnya ke dalam fungsi sebagai parameter, mengubah suai nilai pembolehubah rentetan dalam fungsi, dan kemudian mengeluarkan nilai yang diubah suai dalam fungsi utama. Kodnya adalah seperti berikut:
package main import "fmt" func changeStr(str string) { str = "hello" } func changeStrPtr(str *string) { *str = "hello" } func main() { str := "world" changeStr(str) fmt.Println(str) // 输出 world changeStrPtr(&str) fmt.Println(str) // 输出 hello }
Dalam kod di atas, kami mentakrifkan dua fungsi changeStr dan changeStrPtr, yang digunakan untuk mengubah suai pembolehubah rentetan str masing-masing. Dalam fungsi changeStr, kami hanya menetapkan pembolehubah rentetan yang diluluskan kepada "hello", tetapi pengubahsuaian ini tidak akan menjejaskan pembolehubah str dalam fungsi utama. Dalam fungsi changeStrPtr, kami mengubah suai nilai yang ditunjukkan oleh penunjuk parameter yang diluluskan kepada "hello".
3. Pengubahsuaian parameter jenis nilai dalam Golang
Untuk parameter jenis nilai, pengubahsuaian dalam fungsi tidak akan menjejaskan pembolehubah apabila fungsi dipanggil. Ini kerana fungsi akan membuat salinan parameter jenis nilai dan kemudian mengubah suainya di dalam fungsi. Oleh itu, apabila kami mengubah suai parameter jenis nilai dalam fungsi, kami hanya mengubah suai salinan parameter dan tidak mempunyai kesan ke atas pembolehubah asal.
package main import "fmt" func changeInt(i int) { i = 10 fmt.Println("i in function:", i) } func main() { i := 5 changeInt(i) fmt.Println("i in main:", i) }
Dalam kod di atas, kami mentakrifkan fungsi changeInt, yang menerima parameter i jenis int dan menetapkan nilai i kepada 10. Dalam fungsi utama, kami mentakrifkan pembolehubah i jenis int dan menetapkan nilainya kepada 5. Kemudian, kami memanggil fungsi changeInt, menghantar i sebagai parameter. Apabila fungsi menyelesaikan pelaksanaan, kami mengeluarkan nilai i dalam fungsi utama. Oleh kerana kami mengubah suai salinan parameter i dalam fungsi changeInt, nilai i selepas fungsi itu dilaksanakan masih 5.
4. Pengubahsuaian kepada parameter jenis rujukan dalam Golang
Untuk parameter jenis rujukan, pengubahsuaian dalam fungsi boleh menjejaskan pembolehubah secara langsung apabila fungsi dipanggil. Di Golang, jenis penunjuk adalah jenis rujukan. Dalam fungsi, jika parameter yang kita lalui adalah jenis penunjuk, maka mengubah suai nilai yang ditunjuk oleh penunjuk di dalam fungsi akan secara langsung mempengaruhi pembolehubah apabila fungsi dipanggil.
package main import "fmt" type Person struct { Name string Age int } func changePerson(p *Person) { p.Name = "Tom" p.Age = 18 fmt.Println("Person in function:", p) } func main() { person := Person{Name: "Jack", Age: 20} changePerson(&person) fmt.Println("Person in main:", person) }
Dalam kod di atas, kami mentakrifkan struktur bernama Orang, yang mengandungi dua medan: Nama dan Umur. Kami juga mentakrifkan fungsi changePerson, yang menerima penunjuk kepada jenis struktur Orang. Di dalam fungsi, kami mengubah suai nilai yang ditunjukkan oleh penunjuk dan mengeluarkan struktur Orang yang diubah suai. Dalam fungsi utama, kami mentakrifkan orang pembolehubah Orang dan memulakannya kepada {Name: "Jack", Umur: 20}. Seterusnya, kami menghantar penunjuk orang sebagai parameter kepada fungsi changePerson. Apabila fungsi itu dilaksanakan, kami mengeluarkan nilai orang dalam fungsi utama dan kami dapati orang itu telah diubah suai kepada {Name: "Tom", Umur: 18}.
5. Nota
Anda perlu memberi perhatian kepada perkara berikut apabila menggunakan pengubahsuaian parameter:
6
Artikel ini memperkenalkan pengubahsuaian parameter di Golang, termasuk kaedah lulus parameter dan kaedah pengubahsuaian parameter jenis nilai dan parameter jenis rujukan. Dalam fungsi, kita boleh mengubah suai nilai pembolehubah asal dengan mengubah suai parameter, tetapi kita perlu memberi perhatian kepada kaedah lulus parameter dan penggunaan kaedah pengubahsuaian yang munasabah. Mengubah suai parameter bukan sahaja boleh meningkatkan kecekapan program, tetapi juga membolehkan kami mengawal pelaksanaan program dengan lebih fleksibel semasa pengaturcaraan.
Atas ialah kandungan terperinci pengubahsuaian parameter golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!