我在Go.my程序中编写CLI接口程序,要求用户输入文件名作为参数.以下是我编写的代码,用于处理用户未输入任何参数的情况.但它恐慌并给出错误"索引超出范围".我怎么处理这个?
package main
import (
"encoding/hex"
"fmt"
"io/ioutil"
"log"
"os"
)
func main() {
if len(os.Args) == 0 {
fmt.Println("usage: gohex <filename>")
os.Exit(1)
} else {
filename := os.Args[1]
data, err := ioutil.ReadFile(filename)
if err != nil {
log.Fatal(err)
}
fmt.Println(hex.Dump(data))
}
}
Run Code Online (Sandbox Code Playgroud)
End*_*imo 10
你的问题依赖于这一行:
if len(os.Args) == 0
Run Code Online (Sandbox Code Playgroud)
你正在检查第一个参数,你应该是文件名,但实际上是go/executable文件名.因此,如果您希望检查是否已提供参数,则需要检查参数长度是否大于1.将代码更改为:
if len(os.Args) <= 1 {
log.Fatal("usage: gohex <filename>")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3392 次 |
| 最近记录: |