こんにちは、kurumi-bioです。9回目のブログです。
Go言語について発信します。
環境
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.19.4 windows/amd64
初めに
今回も、fmtパッケージの機能を調査します。
fmt.Fprint
func Fprint(w io.Writer, a ...any) (n int, err error)
デフォルトの書式設定で、オペランドをio.Writerに出力します。 前後のオペランドが文字列でない場合、空白が挿入されます。 戻り値は出力バイト数とエラー内容です。
<サンプルコード>FprintSample.go
package main import "fmt" import "os" func main() { f, e := os.OpenFile("fprint.txt",os.O_CREATE, 0666) if e != nil { fmt.Fprintf(os.Stderr,"Open Error: %v\n", e) } _, e = fmt.Fprint(f,"Fprint1","Fprint2",1,2,3,"Fprint3\n","Fprint4") if e != nil { fmt.Fprintf(os.Stderr,"Fprint Error: %v\n", e) } f.Close() }
<実行結果>
4番目のオペランド(2)は、数値で挟まれているため空白が挿入されています。
fmt.Fprintln
func Fprintln(w io.Writer, a ...any) (n int, err error)
デフォルトの書式設定で、オペランドをio.Writerに出力します。 オペランドの間と改行の後には、必ず空白が挿入されます。 戻り値は出力バイト数とエラー内容です。
<サンプルコード>FprintlnSample.go
package main import "fmt" import "os" func main() { f, e := os.OpenFile("fprintln.txt",os.O_CREATE, 0666) if e != nil { fmt.Fprintf(os.Stderr,"Open Error: %v\n",e) } _, e = fmt.Fprintln(f,"Fprintln1","Fprintln2",1,2,3,"Fprintln3\n","Fprintln4") if e != nil { fmt.Fprintf(os.Stderr,"Fprintln Error: %v\n", e) } f.Close() }
<実行結果>
Fprintと異なり、全オペランドの間に空白が挿入されています。 7番目のオペランド("Fprintln4")は、改行後に空白が挿入されています。
fmt.Fprintf
func Fprintf(w io.Writer, format string, a ...any) (n int, err error)
指定した書式設定で、オペランドをio.Writerに出力します。 戻り値は出力バイト数とエラー内容です。
<サンプルコード>FprintfSample.go
package main import "fmt" import "os" func main() { f, e := os.OpenFile("Fprintf.txt", os.O_CREATE, 0666) if e != nil { fmt.Fprintf(os.Stderr, "Open Error: %v\n", e) } _, e = fmt.Fprintf(f,"%s%s%d%d%d%s\n%s", "Fprintf1","Fprintf2",1,2,3,"Fprintf3","Fprintf4") if e != nil { fmt.Fprintf(os.Stderr, "Fprintf Error: %v\n", e) } f.Close() }
<実行結果>
指定した書式設定で出力されています。
終わりに
FprintとFprintlnで空白挿入のルールが違うのは、何か意味があるのかと思いますが、現時点では謎です。 標準ライブラリーを調べて謎が解けることを期待しています。 次回は、ファイル読み込みを試してみたいと思います。