我的问题是go run someprogram.go usecomand change_variable=value
有可能吗?我该怎么做?
import (
"github.com/spf13/cobra"
"fmt"
"math/rand"
"time"
"github.com/brocaar/lorawan"
MQTT "github.com/eclipse/paho.mqtt.golang"
lds "github.com/iegomez/loraserver-device-sim"
)
func mainCmd() *cobra.Command {
return &cobra.Command{
Use: "sensor", RunE: func(cmd *cobra.Command,args []string) error {
ip := "tcp://127.0.0.1:1883"
cmd.Println("O IP da gateway e o port são:",ip)
//Connect to the broker
opts :=MQTT.NewClientOptions() opts.AddBroker(ip)
看到这是我的go文件包含的内容,我想在命令行中构建go文件并执行并更改ip变量
答案 0 :(得分:0)
如果要在代码内部更改变量的值,则可以使用命令行参数。 您可以参考https://gobyexample.com/command-line-arguments
答案 1 :(得分:0)
您可以在构建期间使用go run -ldflags="-X..
更改变量。标志。
在此示例中,将ip更改为代码开头的变量。
var IP = "<default_ip>"
然后,您可以在其余代码中引用该变量。然后使用
运行代码go run -ldflags="-X <package>.IP <new_ip_address>" program.go
因此,如果您的软件包是main
,程序名称是main.go
,而新IP是0.0.0.0
,您将运行
go run -ldflags="-X main.IP 0.0.0.0" program.go
但是我在测试中使用了它(带有一个=
符号,因为它出错了)
go run -ldflags="-X main.who=0.0.0.0" program.go