如何使用go命令行更改变量?

时间:2018-08-01 10:19:34

标签: ubuntu go

我的问题是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变量

2 个答案:

答案 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

您可以阅读this article here for more information