栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

2020升级版系统学习Docker 践行DevOps理念慕课

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2020升级版系统学习Docker 践行DevOps理念慕课

## download:2020升级版系统学习Docker 践行DevOps理念

1.一個简單的hello,world!

  在工作區目錄下運用命令vim demo1.go,進入代码編輯形式,在其中寫入以下代码:

    package main                        //聲明包名

    import "fmt"                        //引入包

    func main(){

      fmt.Println("Hello,world!")           //打印

    }

  保管.

  運用命令go build demo1.go ,會發下在同級目錄下生成一個demo1的文件.

  運用命令 ./demo1  運轉,在終端打印Hello,world!,執行勝利.

  同樣,保管後也能夠直接運用命令 go run demo1.go ,也會在終端打印.

2.源码文件帶參數執行

  go言语規範庫中有一個代码包特地用來接纳和解析命令參數,此代码包叫做flag.

  在工作區目錄下運用命令vim demo2.go,進入代码編輯形式,在其中寫入以下代码:

    package main

    import(

        "flag"

        "fmt"

    )

    var name string

    func init(){

        flag.StringVar(&name,"name","everyone","The greeting object.")

    }

    func main(){

        flag.Parse();

        fmt.Printf("Hello,%s!n",name)    

    }

    

  保管.

  運用命令go build demo2.go ,會發下在同級目錄下生成一個demo2的文件.

  不帶參數執行:      

    運用命令 ./demo2  運轉,在終端打印Hello,everyone!,執行勝利.

  帶參數執行:

    運用命令 ./demo2 -name="jxd"  運轉,在終端打印Hello,jxd!,執行勝利.

    

  同樣保管後也可直接運用命令 go run demo2.go -name="jxd"  ,也會在終端打印.

  解释:

  flag.StringVar(&name,"name","everyone","The greeting object.")

    第一個參數用來寄存該命令參數的地址.

    第二個參數是該命令參數的稱號,執行時後面用 -name="xxx".

    第三個參數是不帶參數執行時,默許打印的值.

    第四個參數爲命令參數的简單阐明.

    

  flag.Parse() 用於真正的解析參數,並把他們的值赋給相應的變量.

3. go run 和go build

  運用命令 go build 會在同級目錄下生成一個文件

    運用命令./demo2 --help 會打印如下信息:

      Usage of ./demo2:

        -name string

          The greeting object.(default "everyone")

  運用命令 go run demo2.go --help 會打印如下信息:

      Usage of /tmp/go_build577199614/boo1/exe/demo2                  //構建源码文件時,暫時生成的可執行文件的完好途径

        -name string

          The greeting object.(default "everyone")

      exit status 2

4.自定義源码文件的參數運用阐明

 新建demo3.go 寫入以下代码,demo3與demo2的區別在與參加了代码中红色代码局部

  package main

  import(

      "flag"

      "fmt"

      "os"

  )

  var name string

  func init(){

      flag.StringVar(&name,"name","everyone","The greeting object.")

  }

  func main(){

      flag.Usage=func(){

        fmt.Fprintf(os.Stderr,"Usage of %s:n","question")

        flag.PrintDefaults()

      }

      flag.Parse();

      fmt.Printf("Hello,%s!n",name)    

  }

  運用命令 go run demo3.go --help,發現輸出爲:

    Usage of question:

      -name string

        The greeting object.(default "everyone")

    exit status 2

  與之前的輸出暫時的途径不同,這樣我們就自定義了源码文件的參數運用阐明

  再深一層,我們調用flag包中一些函數的時分(StringVar,Parse),實践上是再調用flag.CommandLine的一些對應函數.

  新建demo4.go,寫入以下代码,與demo2.go的區別爲红色代码局部

    package main

    import(

        "flag"

        "fmt"

        "os"

    )

    var name string

    func init(){

        flag.CommandLine=flag.NewFlagSet("",flag.ExitOnError)

        flag.CommandLine.Usage=func(){

          fmt.Fprintf(os.Stderr,"Usage of %s:n","question")

          fmt.PrintDefaults()

          }

        flag.StringVar(&name,"name","everyone","The greeting object.")

    }

    func main(){

        flag.Parse();

        fmt.Printf("Hello,%s!n",name)    

    }

    運用命令 go run demo4.go --help,輸出同demo3.go一樣.

    把demo4.go 中flag.CommandLine=flag.NewFlagSet("",flag.ExitOnError),修正爲 flag.CommandLine=flag.NewFlagSet("",flag.PanicOnError)後,

    運用命令 go run demo4.go --help 運轉,會發現輸出又不同.

    flag.ExitOnError的含義:通知命令參數容器,當命令後跟--help或者參數設置不正確時,在打印命令參數運用阐明後以狀態码2完畢當前程序.

    狀態码2代表用戶錯誤的運用了命令,而flag.PanicOnError與之的區別是在最後抛出“運轉時恐慌(panic)”.

    

    上述兩種狀況在調用flag.Parse函數時會被觸發。

    

    新建demo5.go,寫入以下代码  

      package main

      import(

          "flag"

          "fmt"

          "os"

      )

      var name string

      var cmdLine=flag.NewFlagSet("question",flag.ExitOnError)

      func init(){

          cmdLine.StringVar(&name,"name","everyone","The greeting object.")

      }

      func main(){

          cmdLine.Parse(os.Args[1:]);

          fmt.Printf("Hello,%s!n",name)    

      } 

    運用命令 go run demo5.go --help 運轉,也可完成自定義源码文件的參數運用阐明.

    cmdLine.Parse(os.Args[1:]);指給定的命令參數

    因而,這樣就完整脱離了flag.CommandLine,更靈敏的定製命令參數運用阐明,並且不會影響全局的變量flag.CommandLine.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361237.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号