[日常] 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 {//无限循环
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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:])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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 := "\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 } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2016-03-30 [android] 服务的生命周期(混合方式)
2016-03-30 [android] 绑定方式开启服务&调用服务的方法