繁体   English   中英

在GOLANG中分离开发和生产环境

[英]Separting the development and production environment in GOLANG

我是 GO 编程的新手。 我来自nodejs。 在 nodejs 中很容易分离 dev 和 prod 模式。 通过简单地使用此代码。

if(process.env.NODE_ENV==="production"){
   server.listen(prod.port);
} 
else{
   server.listen(dev.port);
}

我基本上也希望在 GO 中使用此约定。 那么我怎么能分开我的开发和生产代码。

想要这个功能的原因是

分离我的服务器在开发和生产环境中监听的端口

如果有任何技术可以分离端口,它也可以。

PS:我使用 VScode 作为我的代码编辑器。 go-iris作为 go 服务器框架

你可以使用os.Getenv函数。

package main

import (
    "fmt"
    "os"
)

func getEnv() string{
    return os.Getenv("APP_ENV")
}

https://golang.org/src/os/env.go?s=2471:2501#L73

在Go中有多种方法可以实现这一点,但是它们都没有在代码本身中处理这个问题。

  1. 使用环境变量,例如os.Getenv
  2. 解析配置文件,例如一些.yaml文件
  3. 使用标志,例如package flag

我认为最常见的解决方案是使用标志,但所有人都做同样的工作。 通常你在main方法中解析你的标志。

只需使用 arguments 运行您的应用程序,例如go run main.go -mode development ,而默认模式是 production 。 您可以使用脚本启动您的应用程序以分隔不同的环境。 例如,您的 bootstrap.bat 文件可能如下所示: go run main.go -mode development

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM