Golang基础_12-基础小结

前端之家收集整理的这篇文章主要介绍了Golang基础_12-基础小结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

目录

@

注意事项

  • package main表示当前脚本是程序入口,含有main函数
  • 如果不是入口,只是单纯的一个包的话,就尽量与当前目录文件夹的名称保持一致,表示一个包的脚本

    slice的append函数的真面目

  • slicez作为参数传递时是引用类型的,也就是把地址传进去了,要是做了一般的修改,就是真的修改

  • @H_502_19@
    package main
    import (
        "fmt"
    )
    func ppp(s []int) {
        s = append(s,3)
    }
    func main(){
        s := make([]int,0)
        fmt.Println(s)
        ppp(s)
        fmt.Println(s)
    }

    结果是:

    []
        []

    本来应该改变的,为什么没有变?
    因为append函数实际上不是在后边加上一段空间,而是重新找了块内存,而原先s的没有动,ppp()里面如果返回了,就对了意思
    所以使用slice会修改时,建议尽量使用返回值

    time的Format函数参数使用常量,不要使用字符串

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        t := time.Now()
        fmt.Println(t.Format(time.ANSIC))
        fmt.Println(t.Format("Mon Jan _2 15:04:05 2006"))
    }

    建议使用第一行的输出方式,第二行不知道会出什么样的问题。。。balabala

    在for range闭包里使用goroutine注意:要传参数进去

    func main() {
        s := []string{"a","b","c"}
        for _,v := range s {
            go func() {
                fmt.Println(v)
            }()
        }
        select {}
    }

    上面的结果无法得到想要的结果

    func main() {
        s := []string{"a",v := range s {
            go func(v string) {
                fmt.Println(v)
            }(v)
        }
        select {}
    }

    这个代码可以分别输出a,b,c,但是每次顺序都不同,研究一下。。

猜你在找的Go相关文章