编写第一个“Hello,世界”程序
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
1.1.1 go 程序除了在编译器内部可以运行之外,还可以利用go run 命令在电脑终端运行,如:
go run C:\Users\jianquanqin\GolandProjects\awesomeProject\src\helloworld\helloworld.go
1.1.2 使用 go build 可以在Windows系统下生成.exe文件,在Mac系统下生成可以直接执行的unix 文件
.exe文件意味着可以直接执行
go build helloworld.go
1.1.3 回顾上述程序本身
Go语言代码通过package来组织,类似于其他语言中的libraries 或 modules,一个package包含一个或者多个.go源代码文件
1.1.4 Go的标准库提供了100多个包,以支持常见的功能,如输入、输出、排序以及文本处理。其中main包比较特殊,它定义了一个可独立执行的程序而不是一个库,是所有程序执行时的入口
1.1.5 Go语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句
大多数情况下,我们都需要处理一些输入参数,比如来自程序外部文件、网络连接、其他程序的输出、敲键盘的用户、命令行参数以及其他类似的输入源。首先我们来看命令行参数:命令行参数即命令行中给定的参数。我们先来看个程序,以加深理解:
package main
import (
"fmt"
"os"
)
func main() {
var s, sep string
for i := 1; i
1)先让我们了解一下os包:它以跨平台的方式提供了一些与操作系统交互的函数和变量,其中我们要使用该包下的Args变量来获取程序的命令行参数,调用方式:os.Args
Args本质上是一个string 类型的slice(slice是一种复合数据类型,是一种长度可变的array),定义如下:
var Args []string
可以通过索引访问切片中的元素,如:os.Args[i]
2)定义变量
var s, sep string
var 定义了两个字符串变量,初始值为空字符串:“”
3)for循环
Go语言中只有for循环这一种循环结构,但是由不同形式,其中initialization;condition;post都可以省略
for initialization; condition; post {
// zero or more statements
}
initialization一般是短变量声明、自增语句、赋值语句或函数调用; condition是一个布尔表达式;true时执行循环体;post在循环体执行结束后执行,之后再次对condition求职,false时循环结束
for 循环可以用break 或 return终止
for可以和range搭配进行元素遍历
import (
"fmt"
"os"
)
func main() {
s, sep:=" "," "
for _,arg:= range os.Args[1:]{
s += sep + arg
sep = " "
}
fmt.Println(s,len(os.Args))
}
4)+、=
+对于字符串来说是链接两个字符串,=是赋值操作
小结:根据上面的程序,我们了解了一些Go语言的语法,那么命令行参数是什么呢?其实命令行参数在这里既可以是os.Args中的初始值(在本机情况下为: C:\Users\xxx\AppData\Local\Temp\GoLand___go_build_awesomeProject_src_helloworld.exe),也可以是os.Args新增的元素