-2

在 GoLang 中编写 CLI 应用程序并希望在不同的会话/命令中使用 URL。通过 Cobra 实现 CLI,我想在开始时配置 URL,然后在其他命令中继续使用它。

尝试使用以下方法 -

os.Setenv("URL", URL) os.Getenv("URL")

上述方法仅适用于同一进程(如果 set 和 get 进程不同则不起作用)。

知道我们该怎么做吗?

更新:我想知道是否可以在 Go 中完成?我知道可以通过将其存储在 file/db 中,甚至在环境变量中设置,但探索在 Go 中实现它的方法来轻松完成。

4

1 回答 1

-2

您可以建立一个简单的侦听器,为其他进程提供请求。它可以接收和提供任何类型的内容。

使用net.Listen("tcp",":8080")很容易设置一个监听守护进程。也许您可以将此片段作为样板:

package main

import (
    "fmt"
    "io"
    "log"
    "net"
    "strings"
)

type textProcessor struct {
    input *string
}

func (this textProcessor) Write(b []byte) (int, error) {
    *this.input = string(b)
    return len(strings.TrimSpace(string(b))), nil
}

func main() {
    t := textProcessor{new(string)}

    l, err := net.Listen("tcp", ":8080")
    if err != nil {
        log.Fatal(err)
    }
    defer l.Close()
    for {
        // Wait for connection
        conn, err := l.Accept()
        if err != nil {
            log.Fatal(err)
        }

        io.Copy(t, conn)
        fmt.Print("Echo: ", *t.input)
        conn.Close()
    }
}

使用telnet localhost 8080检查它,然后输入一些垃圾。

于 2017-08-08T12:26:16.190 回答