はじめに
先日DonutsさんのGo言語勉強会に参加した際に、golangの出力結果に謎の文字が出力されてそれについて唸ったので原因と解決方法をば。
なにがあったの
golangの出力結果に謎の文字(% percent パーセント記号)が出力された。
該当コード
hoge.go
package main
import "fmt"
func main() {
str := "text"
fmt.Print(str)
}
原因と解決方法
zshは出力結果の最後が改行されていない場合、zsh側で自動的に改行を行ってくれる。
そして、その際に勝手に改行したことを示す記号として%が出力される。
試しにbashで同じコードを実行してみるとこう
zshとは違い自動的に改行されていないのがわかる。
試しにgolang側で最後に改行をしてあげるとこう
hoge.go
func main() {
str := "text"
fmt.Println(str)
}
なるほどね?
このzshが勝手に出力してくれる文字列は$PROMPT_EOL_MARK
という環境変数で任意に設定できる。
良いですね。
表示したくないと思った場合はこんな感じに.zshrcに
export PROMPT_EOL_MARK=''
空文字を設定してあげれば大丈夫です。