[日常] Go语言圣经-命令行参数
发布日期:2021-09-11 05:52:30 浏览次数:31 分类:技术文章

本文共 2212 字,大约阅读时间需要 7 分钟。

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 niu bi        }

  

 

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

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

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

 

7.使用strings包的Join函数

 

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

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

package mainimport (        "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 := "\n"        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}

  

转载地址:https://blog.csdn.net/weixin_34406061/article/details/85979949 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:async & await 的前世今生(Updated)
下一篇:Recommended Settings for Tracing and Message Logging

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月30日 18时18分12秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【Java网络编程与IO流】Http协议详解以及面试有关问题 2019-04-26
【面试题目】Java设计模式你有哪些了解?说几个常用的。 2019-04-26
【计算机操作系统】常说的死锁是什么?死锁产生的必要条件是什么?死锁的解决策略是什么? 2019-04-26
【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些? 2019-04-26
【计算机操作系统】虚拟内存是什么?分页系统地址映射?页面置换算法有哪些?分段地址映射又是什么? 2019-04-26
【计算机操作系统】设备管理?磁盘结构是怎么样的?磁盘调度算法有哪些? 2019-04-26
【多线程高并发】为什么要使用多线程?创建多少个线程合适呢? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印1-100两个数?多线程轮流打印数字? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印字符串? 2019-04-26
【Linux命令篇】Linux命令实践 2019-04-26
【Leetcode单调队列】Leetcode239 滑动窗口最大值 2019-04-26
【Leetcode-单调栈】单调栈相关的题目-下一个更大的元素I 每日温度 2019-04-26
【Leetcode单调队列】- 洛谷P1714切蛋糕 2019-04-26
【Leetcode优先级队列】- 数据流的中位数 2019-04-26
【Leetcode优先级队列】-合并K个升序链表 2019-04-26
【多线程与高并发】-Java如何实现一个阻塞队列呢? 2019-04-26
【多线程高并发】-Java使用阻塞队列ArrayBlockingQueue实现生产者消费者模式? 2019-04-26
【多线程高并发】-多线程实现数组的读与写 2019-04-26
【Java设计者模式】-Java实现订阅-发布者模式 2019-04-26
【计算机操作系统】-什么是系统调用呢?什么是用户态?什么是内核态? 2019-04-26