我是 Go 编程语言的初学者,我对这个示例程序很感兴趣。
通过
$ go run <filename>.go 1
(或任何其他整数)执行程序
我的问题如下:
请关注程序中的以下行
digit := stringOfDigits[column] - '0'
如果我跑
fmt.Println(stringOfDigits[column])
这返回 50
如果我跑
fmt.Println(digit)
这返回 2
那么,50 - '0' 如何等于 2?
为什么stringOfDigits[column]
返回 50?比如50是怎么进去的?
还有,“0”和“0”有什么区别,引号重要吗?
在程序中,“0”将运行,“0”将中断程序
代码块:
package main
import (
"fmt"
"log"
"os"
"path/filepath"
)
func main() {
if len(os.Args) == 1 {
fmt.Printf("usage: %s <whole-number>\n", 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"},
}