momo's Blog.

Go语言学习-入门

字数统计: 511阅读时长: 2 min
2020/09/21 Share

入门

hello world

我们先从最简单的 hello,world 开始

1
2
3
4
5
6
7
package main

import "fmt"

func main() {
fmt.Println("hello World")
}

go语言最开头一定是package来声明,它类似于Python中的模块.用来声明该文件是属于哪个包,比如后面的import,则导入了 fmt

其中,名为main的包有些特殊,它是程序的主入口。

其中Go原生支持Unicode

命令行参数

使用了OS包,获取方式为os.Args

os.Args 是一个字符串slice, 暂时可以理解它为一个动态容量的顺序数组。

和其他语言一样,比如Python, os.Args 的第一个元素是 os.Args[0],它是命令的本身名字,后续的位置则是参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)
}

打印结果

1
2
go run 1.2命令行参数.go 124 41245 5123 啦啦
124 41245 5123 啦啦

go 语言使用 var 来声明变量, 并且初始为空

在go中,只有一个循环语句。

for循环

1
2
3
for init; condition; post {
// 语句
}

init 部分在循环开始前执行, condition(条件)是一个布尔表达式,如果条件为真,则循环继续执行,如果为假则退出循环, post部分是循环体结束以后被执行。

相较于传统的While循环,go当中的循环也可以省略 init 和 post,部分来充当while循环
如:

1
2
3
4
// while循环
for condition {
//...
}
1
2
3
4
// 类似Python的while True
for {
// ...
}

另一种for循环的用法,遍历slice数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import (
"fmt"
"os"
)

func main() {
s, sep := "", ""
for _, arg := range os.Args[1:] {
s += sep + arg
sep = " "
}
fmt.Println(s)
}

使用更高级的方法,使用strings.Join方法

1
2
3
func main() {
fmt.Println(strings.Join(os.Args[1:], " "))
}

练习:

  1. 修改echo程序,输出 os.Args[0], 即命令的名字

    1
    2
    3
    func main() {
    fmt.Println(os.Args[0])
    }
  2. 修改echo程序, 输出参数的索引和值, 每行一个

    1
    2
    3
    4
    5
    func main() {
    for index, i := range os.Args[1:] {
    fmt.Println(index, i)
    }
    }
CATALOG
  1. 1. 入门
    1. 1.1. hello world
    2. 1.2. 命令行参数
      1. 1.2.1. 练习: