美文网首页
1.2 命令行参数

1.2 命令行参数

作者: zzjack | 来源:发表于2017-10-10 17:31 被阅读0次

    切片

    go语言采用左闭右开的方式,即区间包括第一个索引元素,不包括最后一个。因为这样可以简化逻辑。

    • 比如,a=[1,2,3,4],a[0:3]=[1,2,3],不包含最后一个元素。
    • 比如s[m:n]这个切片,0 <= m <= n <= len(s),包含n-m个元素,产生第m个元素到第n-1元素的切片。

    echo 1.0

    package main
    import(
      "fmt"
      "os"
    )
    func main(){
     var s,sep string
      for i := 1;i<len(os.Args);i++{
        s += sep + os.Args[i]
        sep = " "
      }
      fmt.Println(s)
    }
    

    这个程序很简单,书中指出当参数庞大时,这种写法开销很大。

    echo 1.1

    使用strings包的Join函数

    func main(){
      fmt.Println(strings.Join(os.Args[1:]," "))
    }
    

    练习1.1

    import (
        "fmt"
        "os"
        "strings"
    )
    
    func main(){
        fmt.Println(strings.Join(os.Args[:]," "))
    }
    

    练习1.2

    import (
        "fmt"
        "os"
    )
    
    func main(){
        for seq,i := range os.Args[1:]{
            fmt.Println(seq,i)
        }
    }
    

    练习1.3

    package main
    
    import (
        "strconv"
        "strings"
        "time"
        "fmt"
    )
    
    type myfunction struct {
        limit int
    }
    
    func (this myfunction)level()[]string{
        var col []string
        for i:=0;i<this.limit;i++{
            square := i * i
            col = append(col,strconv.FormatInt(int64(square),10))
        }
        return col
    }
    
    func (this myfunction)high(){
        strings.Join(this.level()," ")
    }
    
    func (this myfunction)low(){
        var s string
        for _,i := range this.level(){
            s += i
            s += " "
        }
    }
    
    func main(){
        m := myfunction{limit:100000}
        ctime := time.Now().Unix()
        m.high()
        fmt.Println("high",time.Now().Unix() - ctime)
        ctime_low := time.Now().Unix()
        m.low()
        fmt.Println("low",time.Now().Unix() - ctime_low)
    }
    

    本来想用装饰器模式精简一下代码,可是我不会写。
    用goland来跑,high在0秒以内,low用了65秒,差异确实很大。

    相关文章

      网友评论

          本文标题:1.2 命令行参数

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