数组是值传递
在函数调用参数中,数组是值传递,无法通过修改数组类型的参数返回结果
func main() {
x := [3]int{1, 2, 3}
func(arr [3]int) {
arr[0] = 7
fmt.Println(arr)
}(x)
fmt.Println(x)
}
结果
[7,2,3]
[1,2,3]
map遍历是顺序不固定
map是一种hash表实现,每次遍历的顺序都可能不一样
func main() {
m := map[string]string{
"1": "1",
"2": "2",
"3": "3",
}
for i := 0; i < 3; i++{
for k, v := range m {
print("\t\t",k,"\t", v)
}
println()
}
}
结果

返回值被屏蔽
在局部作用域中,命名的返回值被同名的局部变量屏蔽
1 func Foo() (err error) {
2 if err := Bar(); err != nil {
3 return
4 }
5 return
6 }
调用Foo(),编译报错
err is shadowed during return(返回时err被隐藏)