LoginSignup
535
327

More than 3 years have passed since last update.

【Go】print系関数の違い

Last updated at Posted at 2015-09-14

fmtパッケージによって提供されるprint系関数。
Fprint, Sprintln, Printf...などいろいろあって、なんとなく使っているとこんがらがってしまうので、違いを整理してみました。
初歩的な内容ですが、間違っていたらご指摘ください :kissing:

はじめに

print系の関数はPrint()を基本形として、{接頭辞}Print{接尾辞}()というふうに接頭辞・接尾辞によって挙動が変わってくるようですね。

ですので、説明も基本形のPrint()からはじめ、各接頭辞・接尾辞による挙動の違いを見ていきます。

基本形 Print()

デフォルトのフォーマットで標準出力に出力します。


fmt.Print("Hello world!")
// -> Hello world!

接頭辞 F

Fprint(), Fprintf(), Fprintln()

はじめに「F」が付いているものは、書き込み先を明示的に指定できます。


// os.Stdout で書き込み先を標準出力に指定
fmt.Fprint(os.Stdout, "Hello world!")
// -> Hello world!

https://golang.org/pkg/fmt/#Fprint
https://golang.org/pkg/fmt/#Fprintf
https://golang.org/pkg/fmt/#Fprintln

接頭辞 S

Sprint(), Sprintf(), Sprintln()

はじめに「S」が付いたものは、出力ではなくフォーマットした結果を文字列で返します。
変数に代入する際などはこちらを使用します。


hello := fmt.Sprint("Hello world!")
fmt.Print(hello)
// -> Hello world!

https://golang.org/pkg/fmt/#Sprint
https://golang.org/pkg/fmt/#Sprintf
https://golang.org/pkg/fmt/#Sprintln

接尾辞 f

Printf(), Fprintf(), Sprintf()

後ろに「f」が付いたものは、フォーマットを指定することができます。


hello := "Hello world!"
fmt.Printf("%s\n", hello)
fmt.Printf("%#v\n", hello)
// -> Hello world!
// "Hello world!"

https://golang.org/pkg/fmt/#Printf
https://golang.org/pkg/fmt/#Fprintf
https://golang.org/pkg/fmt/#Sprintf

接尾辞 ln

Println(), Fprintln(), Sprintln()

後ろに「ln」が付いたものは、オペランドの間に半角スペースが入り、文字列の最後に改行が追加されます。


// Printの場合は、スペースも改行も挿入されない
fmt.Print("Hello", "world!")
fmt.Print("Hello", "world!")
// -> Helloworld!Helloworld!

// Printlnの場合は、スペースと改行が挿入される
fmt.Println("Hello", "world!")
fmt.Println("Hello", "world!")
// -> Hello world!
// Hello world!

https://golang.org/pkg/fmt/#Println
https://golang.org/pkg/fmt/#Sprintln
https://golang.org/pkg/fmt/#Fprintln

まとめ

接頭辞 F
書き込み先を指定
接頭辞 S
結果を文字列で返す
接尾辞 f
フォーマットを指定
接尾辞 ln
オペランド間にスペース、最後に改行を追加

特徴を覚えて、使い分けましょう :blush:

参考

535
327
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
535
327