package main import "fmt" func main() { i := 512 // 声明变量i fmt.Println(&i) // 0xc00009c010 if true { fmt.Println(i) // 512 // 重要说明:这里第二次声明变量i,将会发生变量覆盖 i := 1024 // Declaration of 'i' shadows declaration // 重要说明:可以看到下面的&i和上面的&i是不同的,即两个i并不是同一个变量 fmt.Println(&i) // 0xc00009c030 fmt.Println(i) // 1024 } fmt.Println(i) // 512 } // ========== 总结 ========== // // 1、变量覆盖就是在代码块内外两次声明同一个变量,虽然变量名相同,但实际上它们并不是同一个变量。 // 1、变量覆盖有时会让debug变得非常麻烦,所以写代码时应该尽量避免出现变量覆盖。 // 2、避免出现变量覆盖最简单的方法是将变量声明全部放在函数开头,后面只使用变量,不再声明变量。
Copyright © 2024 码农人生. All Rights Reserved