12

我是 GO 编程新手。我来自nodejs。在 nodejs 中分离 dev 和 prod 模式很容易。只需使用此代码即可。

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

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

想要这个功能的原因是

分离我的服务器在 dev 和 prod 环境中监听的端口

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

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

4

2 回答 2

14

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

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

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

于 2018-08-10T06:17:44.010 回答
13

你可以使用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

于 2018-08-10T06:14:28.983 回答