Go言語のstrings.Replaceを使って、改行コードを含む環境変数を置換する

f:id:yoshitaku_jp:20190529181651j:plain

GoとNetlifyを使って簡易的なAPIサーバを構築した。 処理の中でGoogleスプレッドシートにアクセスする必要があり、認証情報をNetlifyの環境変数に設定した。しかし、環境変数から改行コードを含む値を取得する時にハマった。一般的な、どの環境でも起こりうるので気をつける。

今回はGo言語で実装していたこともあり、strings.Replaceを使って解決した。

環境

go1.12.5

ソース

package main

import (
    "fmt"
    "os"
    "strings"

)

func main() {

    fmt.Println(os.Getenv("HOGE"))
    fmt.Println("----------------")
    fmt.Println(strings.Replace(os.Getenv("HOGE"), "\\n", "\n", -1))

}

出力結果

set HOGE="Hello\nWorld" && go run main.go

"Hello\nWorld"
----------------
"Hello
World"

まとめ

  • Netlifyの環境変数に認証情報を設定した。
  • 改行コードが値に含まれていたためハマってしまいました。
  • ReplaceAll という関数もあり、これは必要な引数が違う

参考

blog.konboi.com

qiita.com

Gopherくん

github.com