美文网首页
Golang中一些设定

Golang中一些设定

作者: 赵荆州 | 来源:发表于2019-07-08 14:57 被阅读0次
    1. 格式化时间不是用yyyy MM DD HH mm ss sss等在其他语言中常见的符号。
      而是:
      2006-01-02 15:04:05
    now := time.Now()
    nowRight := now.Format("2006-01-02 15:04:05")
    
    

    完整UTC为:2006-01-02T15:04:05-07:00

    1. map 每次遍历都是无序的。据说是为了让开发者不要依赖不是很可靠的map有序遍历,索性改成了无序的。
      正确的做法是获取到key,然后排序key,然后在遍历map:
    var keys []int
    for k,_ :=range  map{
        keys = append(keys, k)
    }
    sort.Ints(keys)
    for _,v:=range keys{
        fmt.Printf("%d-%d\n",v,aa[v])
    }
    
    1. slice 不初始化不能赋值,但是用append可以
    var s []int
    s[0]=100
    //报错,runtime error: index out of range
    s=append(s,100)
    //正确通过,append里面可能对s做的初始化
    
    1. go get [-u -v]
      go build : 编译出可执行文件
      go install : go build + 把编译后的可执行文件放到GOPATH/bin目录下
      go get : git clone + go install

    2. Golang不支持函数的重载

    3. 可以多个变量一起赋值,利用这个特性,可以很简单的实现斐波拉契数列

    a:=1
    b:=1
    for i:=0;i<10;i++{
    fmt.Println(a)
    a,b=b,a+b
    }
    
    1. Golang中的方法与其它语言中不一样,其它语言一般直接定义在Class 或者struct中,在Golang中是分离的。
    func (recevier type) methodName(参数列表)(返回值列表){}
    
    recevier type 是不是指针也有很大影响
    
    func (i *integer) set(val integer){
        *i = val
    }
    
    var j integer
    j.set(10)
    
    1. 读取chan的两种方式
    close(ch)
    //第一种:
     for{
        b,ok:=<-ch
        if !ok{
            fmt.Println("chan is closed!")
            break
        }
        fmt.Println(b)
    }
    //第二种:
    for v:=range ch {
      fmt.Println(v)
    }
    

    相关文章

      网友评论

          本文标题:Golang中一些设定

          本文链接:https://www.haomeiwen.com/subject/rggohctx.html