Читать флаг командной строки из скомпилированного двоичного файла - PullRequest
1 голос
/ 15 июня 2019

Я создал простую программу, в которой я установил 2 флага и собрал ее. Как прочитать эти флаги и установить эти 2 значения из скомпилированного двоичного файла?

Я пытался прочитать файл многими способами, но не нашел значения флага.

flag.go

var (
    name *string
    version *int
)

func init(){
    name = flag.String("name","test", "a string")
    version = flag.Int("version", 1.0, "an int")
}

func main(){
    flag.Parse()
    fmt.Println("name : ", *name)
    fmt.Println("version : ", *version)
}

main.go

func main(){
    path := "/Users/____/Desktop/flag"

    dat,_ := ioutil.ReadFile(path)

    strings.Contains(string(dat),"name")

    fmt.Println("%s opened\n", dat)
}

Я хочу найти значение флага из скомпилированного двоичного файла и сохранить его в основной программной переменной. Нечто подобное

var flagMain = test var versionMain = 1.0

1 Ответ

1 голос
/ 15 июня 2019

flag.Parse() - операция во время выполнения.

Считывание встроенного значения означает, что указанное значение было внедрено во время компиляции.
См. AgentZombie go-embed-version в качестве примера:

go build -o /tmp/versserv -ldflags "-X github.com/AgentZombie/go-embed-version/cmd.Version=foo" server/server.go

Затем вы можете вызвать ваш двоичный файл, который может вернуть встроенное значение.
Та же идея в GoogleContainerTools/container-diff commit 367eb42 из PR 304 .
Это автоматизировано (снова в качестве примера) в ahmetb/govvv

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...