複数行にまたがる文字列のインデント
Go 言語(以下 Golang)で、複数行の文字列を
`
(バックティック、バッククォート)で使うも、可読性のためにインデントさせたい。しかし、インデントすると出力も必要以上にインデントが入ってしまう、あたりまえ体操問題。
func main() { fmt.Printf("%#v", ` やぁ、世界! Hello, world! `) } // Want: // // やぁ、世界! // Hello, world! // Got: // // やぁ、世界! // Hello, world!
- オンラインで動作を見る @ GoPlayground
「golang ヒアドキュメント インデント」でググっても求める形でヒットしなかったので、自分のググラビリティとして。
TL; DR (今北産業)
-
import "github.com/MakeNowJust/heredoc/v2"
-
CLI アプリなどのヘルプ表示に便利。
利用例package main import ( "fmt" "github.com/MakeNowJust/heredoc/v2" ) func main() { // インデントさせたい fmt.Println(`やぁ、世界! Hello, world!`) // インデントさせると出力がズレる fmt.Println(`やぁ、世界! Hello, world!`) // インデントさせても出力はズレない fmt.Println(heredoc.Doc(` やぁ、世界! Hello, world!`), ) } // Output: // やぁ、世界! // Hello, world! // やぁ、世界! // Hello, world! // やぁ、世界! // Hello, world!
- オンラインで動作をみる @ Go Playground