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 {//无限循环

}

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "os"
  6. )
  7.  
  8. func main() {
  9.  
  10. //定义两个string类型的变量
  11. var s, sep string
  12. //短变量声明i
  13. for i := 1; i < len(os.Args); i++ {
  14. s += sep + os.Args[i]
  15. sep = " "
  16. }
  17. fmt.Println(s)
  18.  
  19. //练习 1.1: 修改echo程序,使其能够打印os.Args[0],即被执行命令本身的名字
  20. s1,sep1:="",""
  21. for i := 0; i < len(os.Args); i++ {
  22. s1 += sep1 + os.Args[i]
  23. sep1 = " "
  24. }
  25. fmt.Println(s1)
  26. //输出 /tmp/go-build124823637/command-line-arguments/_obj/exe/echo1 tsh ni
  27. u bi
  28.  
  29. }

  

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

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

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

7.使用strings包的Join函数

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

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

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "os"
  6. "strings"
  7. )
  8.  
  9. func main() {
  10. s, sep := "", "" //短变量声明
  11. //循环迭代,range产生一对值;索引以及在该索引处的元素值。
  12. //_空标识符丢弃索引,arg是索引所对应的值
  13. for _, arg := range os.Args[1:] {
  14. s += sep + arg
  15. sep = " "
  16. }
  17.  
  18. fmt.Println(s)
  19.  
  20. //使用strings包的Join函数
  21. fmt.Println(strings.Join(os.Args[0:], " "))
  22.  
  23. //只是为了调试可以直接打印
  24. fmt.Println(os.Args[1:])
  25.  
  26. //练习 1.2: 修改echo程序,使其打印每个参数的索引和值,每个一行。
  27. s1 := ""
  28. sep1 := "\n"
  29. for index, arg := range os.Args[1:] {
  30. index := fmt.Sprintf("%d ", index) //int转string
  31. s1 += index + arg
  32. s1 += sep1
  33.  
  34. }
  35.  
  36. fmt.Println(s1)
  37. //输出 0 tsh 1 niu 2 bi
  38.  
  39. }

  

[日常] Go语言圣经-命令行参数的更多相关文章

  1. R语言 使用命令行参数运行R程序

    args_test.R 代码如下: Args <- commandArgs()cat("Args[1]=",Args[1],"\n")cat(" ...

  2. [Objective-C语言教程]命令行参数(23)

    执行时,可以将一些值从命令行传递给Objective-C程序. 这些值称为命令行参数,很多时候它们对程序很重要,特别是当想要从外部控制程序而不是在代码中对这些值进行硬编码时就很有用了. 命令行参数使用 ...

  3. C语言讲解命令行参数

    命令行(command line):是在命令行环境中,用户为运行程序输入命令的行. 命令行参数(command-line argument): 是同一行的附加项. C编译器允许main()没有参数或者 ...

  4. c语言中命令行参数argc,argv[]详解

    main(int argc,char *argv[ ]) 1.argc为整数 2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[ ...

  5. C语言/Linux命令行参数argc、argv[ ]详解

    1.void main(int argc,char *argv[]) argv[]:表示的是一个指针数组,一共有argc个元素,其中存放的是指向每一个参数的指针. argc:参数个数 2.以Linux ...

  6. Python 获得命令行参数的方法

    如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?需要模块:sys参数个数:len(sys.argv)脚本名:    sys.argv[0]参数1 ...

  7. python中命令行参数

    python中的命令行参数 python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问.命令行参数是调用某个程序时除程序名外的其他参数. sys.argv是命令行参数的列表 le ...

  8. 【C语言的日常实践(十二)】命令行参数

    C计划main函数有两个参数.文章1一个通常被称为argc,它代表的命令行参数的个数. 第2个通常称为argv.它指向一组參数值. 指针数组:这个数组的每一个元素都是一个字符指针,数组的末尾是一个NU ...

  9. 我也要学C语言-第十九章:命令行参数

    C语言的语法规定main函数是带连个参数的,因为当初是考虑是在控制台下写程序.于是用户可以给参数微控程序.其实现在的WINDOWS程序也可以带参数.一般正规军写的应该程序一般都带命令行参数,帮助文档, ...

随机推荐

  1. c# 锁 Interlocked 操作

    //定义原子变量 ; //原子级别+1值,如果>=0,说明当前锁为空,可以执行,避免重复执行 ) { if (_serverThread == null || (_serverThread.Is ...

  2. MongoDB 安装详细教程 + 常用命令 + 与 Python 的交互

    MongoDB 简介 MongoDB (名称来自 humongous/巨大无比的, 是一个可扩展的高性能,开源,模式自由,面向文档的NoSQL,基于 分布式 文件存储,由 C++ 语言编写,设计之初旨 ...

  3. 双向链表的实现——c++

    c++实现双向链表 : #ifndef DOUBLE_LINK_HXX #define DOUBLE_LINK_HXX #include <iostream> using namespac ...

  4. Elasticsearch安装与环境配置

    Elasticsearch安装与环境配置 确保机器上已经安装了jdk7以上版本 下载:官网下载地址:https://www.elastic.co/downloads/elasticsearch 将下载 ...

  5. javascript 实用工具函数

    整理日常开发中我们常常会使用到的一些工具函数. var utils = (function(){ var fay = {}; // 返回当前时间的毫秒数 fay.getTime = Date.now( ...

  6. 深入set和dict

    一. 浅拷贝和深拷贝   浅拷贝:就是创建一个具有相同类型,相同值但不同id的新对象.  浅拷贝产生的新对象中可变对象的值在发生改变时,会对原对象的值也做出改变,因为这些值是同一个引用. a = [1 ...

  7. 小div在大div里面水平垂直都居中的实现方法

    关于如何设置小盒子在大盒子里面水平垂直方向同时居中的实现方法有很多种,下面仅列举了常用的几种. 首先看一下要实现的效果图及对应的html代码: <div class="parent&q ...

  8. POJ 2242

    #include <iostream> #include <cmath> #include <iomanip> using namespace std; #defi ...

  9. POJ 1056

    #include <iostream> #include <string> #define MAXN 50 using namespace std; struct node { ...

  10. 【字符串】Reverse Words in a String(两个栈)

    题目: Given an input string, reverse the string word by word. For example,Given s = "the sky is b ...