如何使用Go中的cobra库接受单行输入
我正在使用cobra用go语言编写代码,目前Im提供的输入为:如何使用Go中的cobra库接受单行输入,go,input,go-cobra,Go,Input,Go Cobra,我正在使用cobra用go语言编写代码,目前Im提供的输入为: Calc add Enter the Number of inputs 2 Enter the Numbers 2 4 Output: Sum is : 6 对于熟悉cobra的人来说,Calc是我的项目,add是我使用的命令,我希望输入为Calc add N2 2 4(在一行中),并且应该显示输出,其中N是标识输入
Calc add
Enter the Number of inputs
2
Enter the Numbers
2
4
Output: Sum is : 6
对于熟悉cobra的人来说,Calc是我的项目,add是我使用的命令,我希望输入为Calc add N2 2 4
(在一行中),并且应该显示输出,其中N是标识输入数量的变量,2 4是要添加的数字
添加命令的代码:
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
// addCmd represents the add command
var addCmd = &cobra.Command{
Use: "add",
Short: "Addition value of given Numbers",
Run: func(cmd *cobra.Command, args []string) {
length := 0
fmt.Println("Enter the number of inputs")
fmt.Scanln(&length)
fmt.Println("Enter the inputs")
numbers := make([]int, length)
for i := 0; i < length; i++ {
fmt.Scanln(&numbers[i])
}
fmt.Println(numbers)
sum:=0
for _, numbers := range numbers {
sum += numbers
}
fmt.Println("The Sum :",sum)
},
}
func init() {
RootCmd.AddCommand(addCmd)
}
package cmd
进口(
“fmt”
“github.com/spf13/cobra”
)
//addCmd表示add命令
var addCmd=&cobra.Command{
使用:“添加”,
简写:“给定数字的加法”,
Run:func(cmd*cobra.Command,args[]字符串){
长度:=0
fmt.Println(“输入输入数量”)
模板扫描长度(和长度)
fmt.Println(“输入输入”)
数字:=make([]整数,长度)
对于i:=0;i
这将实现你的目标。把你的号码放在一个旗子里--输入。给出其他要添加为参数的数字
func NewCmd() *cobra.Command {
var input int
c := &cobra.Command{
Use: "add",
Short: "Addition value of given Numbers",
Run: func(cmd *cobra.Command, args []string) {
if len(args) != input {
fmt.Println(fmt.Sprintf("You need to provide %v number to sum up", input))
os.Exit(1)
}
numbers := make([]int, input)
for i := 0; i < input; i++ {
num, _ := strconv.Atoi(args[i])
numbers[i] = num
}
sum := 0
for _, numbers := range numbers {
sum += numbers
}
fmt.Println("The Sum :", sum)
},
}
c.Flags().IntVar(&input, "input", 0, "Number of input")
return c
}
func init() {
cmd := NewCmd()
RootCmd.AddCommand(cmd)
}
输出:
总数:15这将达到你的目的。把你的号码放在一个旗子里--输入。给出其他要添加为参数的数字
func NewCmd() *cobra.Command {
var input int
c := &cobra.Command{
Use: "add",
Short: "Addition value of given Numbers",
Run: func(cmd *cobra.Command, args []string) {
if len(args) != input {
fmt.Println(fmt.Sprintf("You need to provide %v number to sum up", input))
os.Exit(1)
}
numbers := make([]int, input)
for i := 0; i < input; i++ {
num, _ := strconv.Atoi(args[i])
numbers[i] = num
}
sum := 0
for _, numbers := range numbers {
sum += numbers
}
fmt.Println("The Sum :", sum)
},
}
c.Flags().IntVar(&input, "input", 0, "Number of input")
return c
}
func init() {
cmd := NewCmd()
RootCmd.AddCommand(cmd)
}
输出:
总和:15显示错误,表示未知标志,无法理解原因@AerofoilKite@Manu,您是否仍会遇到该错误。。您需要传递标志--inputI修复了它@Aerofoilkite如果我在输入时不想提及标志名称,该怎么办。例如:calc-a 1 2 3 4(a表示加法)@Aerofoilkite我不明白你的意思。我尝试过不使用标志名称,也不在命令前使用hi-fen。但是我希望在命令前使用hi-fen,格式完全相同。你能帮我一下吗。显示错误,显示未知标志,无法理解原因@AerofoilKite@Manu,你还在犯那个错误吗。。您需要传递标志--inputI修复了它@Aerofoilkite如果我在输入时不想提及标志名称,该怎么办。例如:calc-a 12 3 4(a表示加法)@Aerofoilkite我不明白你的意思。我试过不使用旗号,也不在命令前使用hi-fen。但是我希望在命令前使用hi-fen,格式完全相同。你能帮我一下吗。