【Golang】文字列の中で変数を展開する(テンプレートリテラル)

Go言語にテンプレートリテラルは無い

Go言語には文字列の中に変数を埋め込んで展開する方法がありません。

例えばRubyやJavaScriptには文字列の中で変数を展開する書き方(テンプレートリテラル)ができます。

# Rubyの場合
hello = "Hello"
text = "#{hello}, World!"

p text # => "Hello, World!"
// JSの場合
hello = "Hello"
text = `${hello}, World!`

console.log(text) // => "Hello, World!"

このように変数の値を、そのまま文字列内で使用する構文がGolangには無いのです。

ですが、他の言語のテンプレートリテラルと似たように、文字列と変数の値を同時に使用する方法はGolangにもあります。

+(プラス)を使用して文字列を連結する

文字列の中に変数を埋め込むというよりかは、文字列と変数を「+」の記号で繋ぐやり方です。

package main

import (
  "fmt"
)

func main() {
  hello := "Hello"
  fmt.Println(hello + ", World!")
}

実行結果

Hello, World!

Sprintf関数を使用する

fmtパッケージのSprintf関数を使うことで、テンプレートリテラル的な挙動が実現できます。

Sprintf関数は、文字列と変数を組み合わせて新しい文字列を返します。

「%s」の部分に、変数の値が入ることになります。(以下の例だと%sのところに変数helloの値が入る)

package main

import (
  "fmt"
)

func main() {
  hello := "Hello"
  greet := fmt.Sprintf("%s World!\n", hello)

  fmt.Println(greet)
}

実行結果

Hello World!

個人的には、このSprintf関数を使う方が、どちらかと言えばテンプレートリテラルっぽいなと思いますね。

タイトルとURLをコピーしました