• [日常] Go语言*-命令行参数


    1.编译

    go build hello.go

    2.go get gopl.io/ch1/helloworld 命令,就会从网上获取代码,并放到对应目录中

    下载的代码会放在$GOPATH/src/gopl.io/ch1/helloworld目录

    3.Go语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句。

    4.Go语言在代码格式上采取了很强硬的态度。gofmt工具把代码格式化为标准格式

    gofmt -w hello.go 重写回源文件

    5.goimports,可以根据代码需要, 自动地添加或删除import声明

    go get golang.org/x/tools/cmd/goimports  (被墙不能用)

    命令行参数:

    1.os包以跨平台的方式,提供了一些与操作系统交互的函数和变量。程序的命令行参数可从os包的Args变量获取;os包外部使用os.Args访问该变量。

    2.切片是Go语言的基础概念,现在先把切片s当作数组元素序列, 序列的长度动态变化, s[i]访问单个元素,用s[m:n]获取子序列,序列的元素数目为len(s)

    a = [1, 2, 3, 4, 5], a[0:3] = [1, 2, 3]

    3.os.Args的第一个元素,os.Args[0], 是命令本身的名字,其他参数是os.Args[1:len(os.Args)]  =>   os.Args[1:]

    4.import导入两个包,括号括起来

    5.Go语言只有for循环这一种循环语句

    for initialization; condition; post {

    }

    for condition {

    }

    for {//无限循环

    }

    package main
     
    import (
            "fmt"
            "os"
    )
     
    func main() {
     
            //定义两个string类型的变量
            var s, sep string
            //短变量声明i
            for i := 1; i < len(os.Args); i++ {
                    s += sep + os.Args[i]
                    sep = " "
            }  
            fmt.Println(s)
     
            //练习 1.1: 修改echo程序,使其能够打印os.Args[0],即被执行命令本身的名字
            s1,sep1:="",""
            for i := 0; i < len(os.Args); i++ {
                    s1 += sep1 + os.Args[i]
                    sep1 = " "
            }          
            fmt.Println(s1)
            //输出 /tmp/go-build124823637/command-line-arguments/_obj/exe/echo1 tsh ni
    u bi       
     
    }
    

      

    6.for循环的另一种形式, 在某种数据类型的区间(range)上遍历,如字符串或切片。

    循环迭代,range产生一对值;索引以及在该索引处的元素值。

    _空标识符丢弃索引,arg是索引所对应的值

    7.使用strings包的Join函数

    8.只是为了调试可以直接打印

    fmt.Println(os.Args[1:])

    package main
    
    import (
            "fmt"
            "os"
            "strings"
    )
    
    func main() {
            s, sep := "", "" //短变量声明
            //循环迭代,range产生一对值;索引以及在该索引处的元素值。
            //_空标识符丢弃索引,arg是索引所对应的值
            for _, arg := range os.Args[1:] {
                    s += sep + arg
                    sep = " "
            }
    
            fmt.Println(s)
    
            //使用strings包的Join函数
            fmt.Println(strings.Join(os.Args[0:], " "))
    
            //只是为了调试可以直接打印
            fmt.Println(os.Args[1:])
    
            //练习 1.2: 修改echo程序,使其打印每个参数的索引和值,每个一行。
            s1 := ""
            sep1 := "
    "
            for index, arg := range os.Args[1:] {
                    index := fmt.Sprintf("%d ", index) //int转string
                    s1 += index + arg
                    s1 += sep1
    
            }
    
            fmt.Println(s1)
            //输出 0 tsh 1 niu 2 bi
    
    }
    

      

  • 相关阅读:
    最小生成树 kruskal算法&prim算法
    Floyd算法解决多源最短路问题
    dijkstra算法解决单源最短路问题
    改进后的作业排序
    第一篇 基本结构
    循环轮转算法
    在线工具生成接入信息mqtt.fx快速接入阿里云
    NodeMCU使用ArduinoJson判断指定键值对存在与否
    NodeMCU获取并解析心知天气信息
    快速导出jekyll博客文件进行上传部署
  • 原文地址:https://www.cnblogs.com/taoshihan/p/8679289.html
Copyright © 2020-2023  润新知