示例代码:
package main
import (
"fmt"
"log"
"os"
"path/filepath"
)
func main() {
if len(os.Args) == 1 {
fmt.Printf("usage: @s <whole-number>", filepath.Base(os.Args[0]))
os.Exit(1)
}
stringOfDigits := os.Args[1]
for row := range bigDigits[0] {
line := ""
for column := range stringOfDigits {
digit := stringOfDigits[column] - '0'
if 0 <= digit && digit <= 9 {
line += bigDigits[digit][row] + " "
} else {
log.Fatal("invalid whole number")
}
}
fmt.Println(line)
}
}
var bigDigits = [][]string{
{" 000 ", " 0 0 ", "0 0", "0 0", "0 0", " 0 0 ", " 000 "},
{" 1 ", "11 ", " 1 ", " 1 ", " 1 ", " 1 ", "111"},
{" 222 ", "2 2", " 2 ", " 2 ", " 2 ", "2 ", "22222"},
{" 333 ", "3 3", " 3", " 33 ", " 3", "3 3", " 333 "},
{" 4 ", " 44 ", " 4 4 ", "4 4 ", "444444", " 4 ", " 4 "},
{"55555", "5 ", "5 ", " 555 ", " 5", "5 5", " 555 "},
{" 666 ", "6 ", "6 ", "6666 ", "6 6", "6 6", " 666 "},
{"77777", " 7", " 7 ", " 7 ", " 7 ", "7 ", "7 "},
{" 888 ", "8 8", "8 8", " 888 ", "8 8", "8 8", " 888 "},
{" 9999", "9 9", "9 9", " 9999", " 9", " 9", " 9"},
}
知识点:
-
os.Exit(1)
代表退出程序,并且返回 1 给操作系统(在类 Unix 系统中,程序返回 0 代表成功,非 0 代表执行失败) -
fmt.Printf()
可以接受 % 占位符,类似于 Python 的 % 操作符(后续详讲) -
+=
在 golang 中是支持的,并且字符串的 + 连接也是支持的 -
log.Fatal()
记录一条错误信息,包含日期、时间、错误信息,会默认记录到os.Stderr
, 并且调用os.Exit(1)
终止程序
for 循环:
go 语言中支持 3 种 for
循环:
- 单个条件判断:
for a < b {
f(doThing)
}
// or 省略表达式,等价于true
for { // for true {
f(doThing)
}
- for语句中两个分号:
for i:=0; i < 10; i++ {
f(doThing)
}
// or
for i:=0; i < 10; {
i++
f(doThing)
}
// or
var i int
for ; i < 10; {
i++
f(doThing)
}
- for和range结合的语句:
// k 代表 index,v 代表 value
for k,v := range []int{1,2,3} {
f(doThing)
}
// or
for k := range []int{1,2,3} {
f(doThing)
}
// or
for range []int{1,2,3} {
f(doThing)
}
多维数组:
go 支持定义多维数组,常用声明方式为:
var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type
// 例子:
var array = [3][4]int{
{0, 1, 2, 3} , /* 第一行索引为 0 */
{4, 5, 6, 7} , /* 第二行索引为 1 */
{8, 9, 10, 11}, /* 第三行索引为 2 */
}
有疑问加站长微信联系(非本文作者)