Golang中常见的问题(持续更新)

    科技2022-07-10  140

    Golang中常见的问题(持续更新)

    前言

    这里列举一些我们学习golang时常遇见的问题,他们都是符合golang语言语法的,可以正常的编译,但是可能会出现运行结果错误,或者是由资源泄露的风险

    可变参数是空接口类型

    当参数的可变参数是空接口类型时,传入空接口的切片时需要注意参数的展开的问题:

    func main(){ var a = []interface{}{1,2,3} fmt.Println(a) fmt.Println(a...) }

    不管参数是否展开,编译器都无法发现错误,但是输出是不同的:

    [1 2 3]

    1 2 3

    数组是值传递

    在函数调用参数中,数组是值传递,无法通过修改数组类型的参数返回结果:

    func main(){ x := [3]int{1,2,3} func(arr [3]int){ arr[0] = 7 fmt.Println(arr) }(x) fmt.Println(x) }

    必要时需要使用切片。

    map遍历时顺序不固定

    map是一种散列表实现,每次遍历的顺序都可能不一样:

    func main(){ m := map[string]string{ "1" : "1", "2" : "2", "3" : "3", } for k,value:=range m { println(k,v) } }

    返回值被屏蔽

    在局部变量中,命名的返回值被同名的局部变量屏蔽:

    func Foo()(err error){ if err : bar(); err != nill{ return } return }

    结尾

    本章博客将会一直更新…

    Processed: 0.024, SQL: 8