设为首页 加入收藏

TOP

CLI:使用Go开发命令行应用(二)
2017-09-30 13:48:59 】 浏览:5714
Tags:CLI: 使用 开发 命令 应用
./example7 –help 得到的结果是:
Usage of ./example7:
example7 file1 file2 …
获取输入

?? 目前为止我们只是通过CLI输出了信息,但是不接受任何输入。我们可以基本的fmt.Scanf()来捕捉输入。

package main

import "fmt"

func main() {
    var guessColor string
    const favColor = "blue"
    for {
        fmt.Println("Guess my favorite color:")
        if _, err := fmt.Scanf("%s", &guessColor); err != nil {
            fmt.Printf("%s\n", err)
            return
        }
        if favColor == guessColor {
            fmt.Printf("%q is my favorite color!", favColor)
            return
        }
        fmt.Printf("Sorry, %q is not my favorite color.  Guess again.\n", guessColor)
    }
}
bufio.Scanner

?? fmt.Scanf 对于简单的输入很有效,但是有时候我们可能需要一整行的数据。

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        line := scanner.Text()
        if line == "exit" {
            os.Exit(0)
        }
        fmt.Println(line) // Println will add back the final '\n'
    }
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "reading standard input:", err)
    }
}

这是一个基本的echo程序,如果要退出直接输入exit即可。

一个基本的cat程序

?? 你应该用过很多次cat程序了。我们将会把这篇博客学到的只是融合在一起构建一个基本的cat程序。

package main

import (
    "flag"
    "fmt"
    "io"
    "os"
)

func main() {
    flag.Usage = func() {
        fmt.Printf("Usage of %s:\n", os.Args[0])
        fmt.Printf("    cat file1 file2 ...\n")
        flag.PrintDefaults()
    }

    flag.Parse()
    if flag.NArg() == 0 {
        flag.Usage()
        os.Exit(1)
    }

    for _, fn := range flag.Args() {
        f, err := os.Open(fn); 
        if err != nil {
            panic(err)
        }
        _, err = io.Copy(os.Stdout, f)
        if err != nil {
            panic(err)
        }
    }
}
帮助

?? 对于帮助我们在上面已经讲了,但是还没有明确的定义
-h
–help

?? 上面这些都会触发help。

总结

??本篇博客中只是讲了一些CLI的基本用法。如果想要学习更多,可以查看这些包的godoc

其他的命令行库

?? 还有一些第三方库可以让写CLI程序更简单:

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Golong语言学习--Mac下搭建go语言.. 下一篇golang枚举类型 - iota用法拾遗

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目