// my_zcat.go package main import ( "fmt" "os" "bufio" "compress/gzip" ) func err_exit(err os.Error) { fmt.Fprintf(os.Stderr,"ERROR: %s\n", err.String()) os.Exit(1) } func main() { if len(os.Args) <= 1 { fmt.Fprintf(os.Stderr, "Usage: my_zcat gzfile\n") os.Exit(1) } gz,err := os.Open(os.Args[1], os.O_RDONLY, 0666) // err != nil && err_exit(err) if err != nil { err_exit(err) } b_rd,err := bufio.NewReaderSize(gz, 32768) if err != nil { err_exit(err) } gz_rd,err := gzip.NewReader(b_rd) if err != nil { err_exit(err) } buf := make([]byte, 32768, 65536) // b_wr,err := bufio.NewWriterSize(os.Stdout, 32768) // if err != nil { err_exit(err) } for { n,err := gz_rd.Read(buf) if err != nil { if err == os.EOF { break } err_exit(err) } os.Stdout.Write(buf[0:n]) // b_wr.Write(buf[0:n]) } gz_rd.Close() gz.Close() return }makeの第3引数で指定するキャパシティの意味するところが、理解出来ていません。
それから、
err != nill && err_exit(err)のようには書けませんでした。コンパイルエラーになります。
[user00@fedora14 ~]$ 6g my_zcat.go my_zcat.go:24: err_exit(err) used as value
2011-04-02追記
実行イメージを書いていなかったので、追記です。
[user00@fedora14 ~]$ 6g my_zcat.go [user00@fedora14 ~]$ 6l -o my_zcat my_zcat.6 [user00@fedora14 ~]$ ls -l my_zcat -rwxrwxr-x 1 user00 user00 2143092 Apr 2 21:17 my_zcat [user00@fedora14 ~]$ echo hello | gzip -c > hello.gz [user00@fedora14 ~]$ ./my_zcat hello.gz hello [user00@fedora14 ~]$ cat /etc/services | gzip -c > test_data.gz ※少し大きいテストデータ [user00@fedora14 ~]$ ./my_zcat test_data.gz | md5sum 77a7f18fe1508eec6c0f2b5e15b8804e - [user00@fedora14 ~]$ md5sum /etc/services 77a7f18fe1508eec6c0f2b5e15b8804e /etc/services
0 件のコメント:
コメントを投稿