在GoLang中编写CLI应用程序,并希望在不同的会话/命令之间使用URL。通过Cobra实现CLI,我想在开始时配置URL,然后在其他命令中继续使用它。
尝试使用以下方法 -
os.Setenv("URL", URL)
os.Getenv("URL")
以上方法仅适用于同一过程(如果设置和获取过程不同,则无效)。
我们怎么知道呢?
更新: 我想知道是否可以在Go内部完成? 我知道可以通过将其存储在文件/数据库中,甚至在环境变量中设置,但在Go中探索方法来轻松完成。
答案 0 :(得分:-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 查看,然后输入一些垃圾。