[Go]GO語言實戰-GO-FLY在線客服cobra庫命令行參數解析

最開始的解析命令行參數是使用的標準庫裏面的flag包,後來想增長新的參數的時候比較複雜和困難,所以使用cobra更加簡單一些git

好比執行go-fly server port 8081是運行項目github

執行go-fly install是導入數據庫數據庫

 

目錄結構:函數

 

 

增長cmd目錄,做爲cmd包,代碼中直接定義全局變量和可導出的函數 , root.go裏面是這樣的spa

package cmd
import (
    "errors"
    "fmt"
    "github.com/spf13/cobra"
    "os"
)
var rootCmd = &cobra.Command{
    Use:   "go-fly",
    Short: "go-fly",
    Long: `簡潔快速的GO語言WEB在線客服 https://gofly.sopans.com`,
    Args:args,
    Run: func(cmd *cobra.Command, args []string) {

    },
}
func args(cmd *cobra.Command, args []string) error{
    if len(args)<1{

        return errors.New("至少須要一個參數!")
    }
    return nil
}
func Execute() {
    if err := rootCmd.Execute(); err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}
func init() {
    rootCmd.AddCommand(versionCmd)
    rootCmd.AddCommand(serverCmd)
    rootCmd.AddCommand(installCmd)
}

 

在入口文件中直接調用Excute方法進行使用命令行

package main

import (
    "github.com/taoshihan1991/imaptool/cmd"
)

func main() {
    cmd.Execute()
}

AddCommand就是在增長參數,好比versionCmd這個實例,定義在了version.go裏面 ,執行go-fly version的時候打印版本號3d

package cmd

import (
    "fmt"
    "github.com/spf13/cobra"
    "github.com/taoshihan1991/imaptool/config"
)

var versionCmd = &cobra.Command{
    Use:   "version",
    Short: "example:go-fly version",
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("go-fly "+config.Version)
    },
}

直接訪問效果:code

 

 

加上參數效果:server

相關文章
相關標籤/搜索