<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ### OverView ***** 學習以三種方式講述 Go 語言如何接受命令行參數 * os.Args * flag * CLI * 命令行-子命令 ` ` ### **OS 獲取命令行參數** ***** ``` os.Args # 為接受的參數,是一個切片 strconv.Atoi # 將字符串數值轉換為整型 strconv.Itoa # 將整型轉換為字符串 strconv.ParseFloat # 將字符串數值轉換為浮點型 ``` ` ` ### **flag 獲取命令行參數** ***** flag 包比 os 讀取參數更方便。可以自定義傳入的參數的類型:比如字符串,整型,浮點型,默認參數設置等 基本的使用方法如下: ``` var operate string flag.StringVar(&operate,"o", "add", "operation for calc") ``` 也可以這樣定義為指針變量 ``` var operate := flag.String("o", "add", "operation for calc") ``` 注意:按照 flag 包的規則,在遇到非`-`開頭的參數時,就停止解析了,其后面的參數都原封不動地全部放在`flag.Args()` ` ` ### **CLI 框架** ***** ``` package main import ( "fmt" "os" "github.com/urfave/cli/v2" ) func main() { app := &cli.App{ Flags: []cli.Flag{ &cli.StringFlag{Name: "X", Value: "GET", Usage: "請求方法"}, &cli.BoolFlag{Name: "i", Value: false, Usage: "是否包含完整輸出"}, &cli.StringSliceFlag{Name: "H", Usage: "請求頭"}, }, Action: func(c *cli.Context) error { fmt.Println(c.String("X")) fmt.Println(c.Bool("i")) fmt.Println(c.StringSlice("H")) fmt.Println(c.Args().First()) return nil }, } if err := app.Run(os.Args); err != nil { panic(err) } } ``` ` ` ### **命令行界面交互** ***** #### 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) } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看