71
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

goでDotenvを使用する

Last updated at Posted at 2015-11-13

サーバー情報やパスワードは外部にもらしたくない場合などRuby、Pythonの場合はdotenvを使用するケースが多いですがGoにもdotenvに対応したライブラリーはあります

goの場合はgodotoenvを使うのがポピュラーみたいなのでこれを使用します

##使用法

下記のライブラリーをインストールしてください。

go get github.com/joho/godotenv
  • .envファイルを作成してください
.env
USER_NAME=root
PASSWORD=password
hello.go
package main

import (
    "os"
    "fmt"
    "log"
    "github.com/joho/godotenv"
)

func Env_load() {
    err := godotenv.Load()
    if err != nil {
        log.Fatal("Error loading .env file")
    }
}

func main() {
    Env_load()
    message := fmt.Sprintf("user_name=%s password=%s", os.Getenv("USER_NAME"), os.Getenv("PASSWORD"))
    fmt.Println(message)
}

// => user_name=root password=password

  • アプリケーションの開発などで固有の環境で使用したい場合

開発環境用とテスト用を想定して.env.developmentと.env.testを作る

.env.developmentを作成

USER_NAME=root
PASSWORD=password
DATABASE_NAME=hoge_development

.env.testを作成

USER_NAME=root
PASSWORD=password
DATABASE_NAME=hoge_test
hello.go
package main

import (
    "os"
    "fmt"
    "log"
    "github.com/joho/godotenv"
)

func Env_load() {
   // 環境変数GO_ENVは適当につけました
    if os.Getenv("GO_ENV") == "" {
        os.Setenv("GO_ENV", "development")
    }

    err := godotenv.Load(fmt.Sprintf(".env.%s", os.Getenv("GO_ENV")))

    if err != nil {
        log.Fatal("Error loading .env file")
    }
}

func main()  {
    Env_load()
    message := fmt.Sprintf("dbname=%s user=%s password=%s",
            os.Getenv("DATABASE_NAME"),
            os.Getenv("USER_NAME"),
            os.Getenv("PASSWORD"),)

    fmt.Println(message)
}

実行してみる

$ go run hello.go
//=> dbname=hoge_development user=root password=password
$ GO_ENV=test go run hello.go
//=> dbname=hoge_test user=root password=password
71
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
71
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?