Пытаясь написать немного go, я хотел бы создать что-то вроде функции cat в Golang:
package main
import (
"fmt"
"os"
"io/ioutil"
"log"
)
func main() {
// part to ask the question and get the input
fmt.Print("Which file would you like to read?: ")
var input string
fmt.Scanln(&input)
fmt.Print(input)
// part to give the output
f, err := os.Open(os.Args[1]) // Open the file
if err != nil {
log.Fatalln("my program broken")
}
defer f.Close() // Always close things open
bs, err := ioutil.ReadAll(f)
if err != nil {
log.Fatalln("my program broken")
}
// part to print the output
fmt.Printf("input", bs) // %s convert directly in string the result
}
Но я начинаю паниковать при выполнении и не нахожу более подробной информации.
Что я сделал не так?
Как я могу получить больше информации об этой ошибке из терминала?
$ go run gocat.go Какой файл вы хотите прочитать?: gocat.go gocat.gopanic: ошибка выполнения: индекс вне допустимого диапазона
горутина 1 [работает]: panic(0x4b1840, 0xc42000a0e0) /usr/lib/go/src/runtime/panic.go:500 +0x1a1 main.main() /home/user/git/go-experimentations/gocat/gocat. go:23 +0x4ba статус выхода 2
os.Args
содержит то, что было передано вашей программе в командной строке. Предполагается, что вы намереваетесь открыть файл, имя которого было введено пользователем в интерактивном режиме и попало в переменную с именем input. Почему, черт возьми, вы не пытаетесь использовать его в качестве имени файла для ввода? - person kostix   schedule 27.12.2016