Skop pembolehubah dan pembayang dalam Go ialah teknik berkuasa yang memberikan kawalan ke atas keterlihatan berubah dan integriti data. Berikut ialah pelbagai senario di mana teknik ini menemui aplikasi berguna:
package main import "fmt" func main() { i := 10 // scope: main j := 4 // Shadowing i within this block for i := 'a'; i < 'b'; i++ { // Access shadowed i and j fmt.Println(i, j) // 97 4 } // Original i comes into scope fmt.Println(i, j) // 10 4 // Shadowing i again within the if block if i := "test"; len(i) == j { // Shadowed i with string "test" fmt.Println(i, j) // test 4 } else { // Shadowed i again with string "test40" fmt.Println(i, j) // test 40 } // Original i comes into scope fmt.Println(i, j) // 10 4 }
package main import "fmt" func main() { i := 1 j := 2 // Create new scope with { } block { // Shadow i with a new local variable i := "hi" // Increment j j++ fmt.Println(i, j) // hi 3 } // Original i comes into scope fmt.Println(i, j) // 1 3 }
package main import "fmt" func fun(i int, j *int) { i++ // Implicitly shadowing (used as local) *j++ // Explicitly shadowing (used as global) fmt.Println(i, *j) // 11 21 } func main() { i := 10 // scope: main j := 20 fun(i, &j) fmt.Println(i, j) // 10 21 }
package main import "fmt" var i int = 1 // Global variable func main() { j := 2 fmt.Println(i, j) // 1 2 // Shadowing global i i := 10 fmt.Println(i, j) // 10 2 fun(i, j) // 10 2 } func fun(i, j int) { fmt.Println(i, j) // 10 2 }
Skop pembolehubah dan teknik membayangi dalam Go menawarkan fleksibiliti, perlindungan data dan peluang untuk organisasi kod yang cekap. Dengan memahami aplikasi mereka, pembangun boleh mengoptimumkan pangkalan kod Go mereka dan mengendalikan keterlihatan dan manipulasi berubah-ubah dengan berkesan.
Atas ialah kandungan terperinci Bagaimanakah Skop Pembolehubah dan Bayangan Meningkatkan Kawalan Kod dan Integriti Data dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!