【go语言圣经1.2】

Go语言命令行参数及字符串拼接

目标

理解利用 os.Args 获取命令行参数的跨平台机制。掌握 Go 程序与操作系统之间的交互方式。

概念

  1. 输入来源:输入可能来自文件、网络、用户交互以及命令行参数等。命令行参数是程序启动时由外部传入的数据,常用于配置或传递待处理的信息。
  2. slice
    • 切片类似于动态数组,用于保存一系列元素。
    • 通过索引 s[i] 访问单个元素
    • 通过 s[m:n] 取子序列(注意:采用左闭右开区间,包含第 m 个元素,不包含第 n 个元素)
  3. os 包:提供了一系列与操作系统交互的函数和变量。
    • 可以跨平台地处理文件、环境变量、命令行参数等
  4. os.Args 就是一个字符串类型的切片,用于保存程序启动时传入的命令行参数。
    • 命令行参数的组织
      • os.Args[0]:保存了程序本身的名字。
      • os.Args[1:]:保存了传递给程序的各个参数。

语言特性

  1. 变量与赋值
    • 隐式初始化与零值
      • 在 Go 中,如果变量未显式赋值,则根据类型自动获得零值(如字符串默认为 "",数值默认为 0)。
    • 赋值运算符
      • += 是常见的赋值运算符,用于将左边变量与右边表达式的结果相加后再赋值给左边变量。
  2. 唯一循环控制语句:for
    • Go 语言只有 for 这一种循环形式。
    • 它可以模拟 C 语言中的传统 for 循环、while 循环(例如 for condition { ... }),甚至可以写成无限循环 for { ... }
    • for 循环的三个部分(初始化;条件;后置语句)均可省略,这使得语法灵活但同时要求代码书写时遵守特定规则(如大括号位置必须正确)。

案例

// ECho1 prints its command-line arguments
package main

import (
	"fmt"
	"os"
)

func main() {
	var s, sep string
	for i :=1; i < len(os.Args); i++ {
		s += sep + os.Args[i]
		sep = " " // 分隔符
	}
	
	fmt.Println(s)
}
  • var s, sep string 声明两个字符串变量,并隐式初始化为 ""(空字符串)
  • 注意:这种字符串逐步拼接的方式在参数数量很大时效率较低(称为二次加工问题),但对于 echo 程序通常问题不大
s, sep := "", ""
for _, arg := range os,Args[1:]{
}
  • 可以用使用 range 简化传统 for 循环遍历os.Args

  • range 同时返回索引和元素。

    • 如果索引不需要,就用空标识符 _ 来丢弃,从而避免编译器因未使用变量而报错。
  • 短变量声明:

    s, sep := "", "" 是一种更简洁的变量声明方式,仅在函数内部可用

func main(){
	fmt.Println(string.Join(os.Args[1:], " "))
}
  • 使用标准库函数strings.Join 提升效率
    • strings.Join 函数接受一个字符串切片和一个分隔符,将所有元素高效连接成一个完整字符串。
    • 这种方式避免了多次字符串拼接带来的性能开销,适合处理大量数据

总结

  1. 字符串拼接的低效问题
    • 逐步拼接字符串(使用 +=)在大规模数据拼接时会产生大量中间值,性能较低。
    • 使用 strings.Join 是一种高效的解决方案,因为它在内部预先分配足够的空间,减少了不必要的内存分配和复制操作。
Go语言圣经》是一本广受好评的教材,旨在帮助读者系统地学习和掌握Go语言。这本书以简明清晰的方式介绍了Go语言的各种特性、语法和用法,是入门和进阶者的理想选择。 首先,该书提供了对Go语言基础知识的全面介绍。它从简单到复杂地解释了Go语言的基本概念,诸如变量、函数、循环和条件语句等等。通过丰富的例子和练习,读者能够逐步理解和掌握这些概念。 其次,该书详细介绍了Go语言的高级特性和用法。读者可以学习到Go语言的面向对象编程、并发编程、网络编程等关键技术。并发编程是Go语言的一个独特特性,对于提高程序性能和扩展能力非常重要。 此外,该书还包含了对常见问题和陷阱的讲解,帮助读者避免一些常见的错误和陷阱。同时,书中提供了大量的案例和实践项目,读者可以通过实际操作来巩固所学内容。 《Go语言圣经》以其简洁明了的风格和对细节的深入讲解而闻名。无论是作为初学者的入门指南,还是作为有经验的开发者的参考书,这本书都能满足读者的需求。此外,该书的PDF版本能够方便地在线或离线阅读,为读者提供了更加便捷的学习体验。 综上所述,《Go语言圣经》是一本内容丰富、权威性强的优秀教材。它不仅适合Go语言的初学者,也适用于那些想要深入学习和掌握Go语言开发者。无论是在线阅读还是PDF版本,读者都能够方便地获取和利用这本宝贵的学习资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值