基础
一,hello
1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 ) 8 9 func main() { 10 who := "World" 11 if len(os.Args) > 1 { 12 who = strings.Join(os.Args[1:], " ") 13 } 14 fmt.Println("Hello", who) 15 }
好像这个就没啥要解释的了,直接run就行了。。
二,bigdigits
1 package main 2 3 import ( 4 "fmt" 5 "log" 6 "os" 7 "path/filepath" 8 ) 9 10 func main() { 11 if len(os.Args) == 1 { 12 fmt.Println("usage: %s <whole-number> ", filepath.Base(os.Args[0])) 13 os.Exit(1) 14 } 15 stringOfDigits := os.Args[1] 16 for row := range bigDigits[0] { 17 line := "" 18 for column := range stringOfDigits { 19 digit := stringOfDigits[column] - '0' 20 if 0 <= digit && digit <= 9 { 21 line += bigDigits[digit][row] + " " 22 } else { 23 log.Fatal("invalid who number") 24 } 25 } 26 fmt.Println(line) 27 } 28 } 29 30 var bigDigits = [][]string{ 31 {" 000 ", 32 " 0 0 ", 33 "0 0", 34 "0 0", 35 "0 0", 36 " 0 0 ", 37 " 000 "}, 38 {" 1 ", "11 ", " 1 ", " 1 ", " 1 ", " 1 ", "111"}, 39 {" 222 ", "2 2", " 2 ", " 2 ", " 2 ", "2 ", "22222"}, 40 {" 333 ", "3 3", " 3", " 33 ", " 3", "3 3", " 333 "}, 41 {" 4 ", " 44 ", " 4 4 ", "4 4 ", "444444", " 4 ", 42 " 4 "}, 43 {"55555", "5 ", "5 ", " 555 ", " 5", "5 5", " 555 "}, 44 {" 666 ", "6 ", "6 ", "6666 ", "6 6", "6 6", " 666 "}, 45 {"77777", " 7", " 7 ", " 7 ", " 7 ", "7 ", "7 "}, 46 {" 888 ", "8 8", "8 8", " 888 ", "8 8", "8 8", " 888 "}, 47 {" 9999", "9 9", "9 9", " 9999", " 9", " 9", " 9"}, 48 } ~
这段代码。。好像也没啥好说的。。嗯,用range获取每个参数数字的相对‘0’的偏移,然后把每个数的对应行的字符串表示拼接起来。。有点像像素拼图。