post Image
【Go】fmt.Print とビルトイン関数の print の違い

はじめに

以前、fmtパッケージにて提供されるprint系の関数についての投稿を行いました。
【Go】print系関数の違い

こちらの投稿にて、ビルトイン関数の print, println についても紹介してみては?とコメントをいただいたので、調べてみました。

ビルトイン関数のprint, printlnについては私自身の実用経験がないので、単純に調べたことをまとめただけになります。
間違い等あればご指摘ください。 :raised_hands:

fmt.Print() について

fmt.Print()については「【Go】print系関数の違い」にてまとめさせていただきましたので、そちらをご参照ください。

ビルトイン関数 print, println について

まずは print について公式のドキュメントを見てみましょう。
builtin – The Go Programming Language

The print built-in function formats its arguments in an implementation-specific way and writes the result to standard error. Print is useful for bootstrapping and debugging; it is not guaranteed to stay in the language.

訳すと、

– print関数は引数をフォーマットして標準エラーに書き込みます。ブートストラッピングやデバッグに役立ちますが、このまま言語に残される保証はありません。

といった感じでしょうか?

ちなみに、println については前述の投稿でも紹介の通り、
接尾辞「ln」がつくのでオペランド間にスペースが入り、最後に改行が加えられるという点がprintと異なります。

fmt.Print() とビルトイン関数 print() の違いは?

それでは、fmt.Print() とビルトイン関数 print() の違いをあげていきましょう。

1. パッケージの import

– fmt.Print()

fmtパッケージで提供されるPrint関数は当然ながらfmtパッケージをimportする必要があります。

import "fmt"

fmt.Print("hello")

– ビルトイン関数 print()

一方、ビルトイン関数は組み込みなので、そのまま使用できます。

print("hello")

2. 書き込み先

– fmt.Print()

fmt.Print()では、標準出力に書き込まれます。
また、fmt.Fprint()とすると書き込み先を設定することも可能です。

– ビルトイン関数 print()

一方、ビルトイン関数では、
ドキュメントにある通り、標準エラーに書き込まれます。

3. フォーマット

– fmt.Print()

fmt.Print() ではデフォルトのフォーマットでフォーマットされます。
デフォルトのフォーマットはこちら。

bool:                    %t
int, int8 etc.:          %d
uint, uint8 etc.:        %d, %x if printed with %#v
float32, complex64, etc: %g
string:                  %s
chan:                    %p
pointer:                 %p

https://golang.org/pkg/fmt/

また、接尾辞にfがついたfmt.Printfなどはフォーマットを指定できます。

– ビルトイン関数 print()

一方、ビルトイン関数のprintでは、フォーマットの指定はできないようです。

The print built-in function formats its arguments in an implementation-specific way

とあり、訳すと「実装固有の方法でフォーマットする」という感じのようですが、
正直なところ、この辺りは理解しきれていないです。。
(詳しい方教えていただけるとありがたいです :sweat_smile:

まとめ

ざっと調べたところ、

fmtパッケージ Print系関数 ビルトイン関数 print
パッケージの import fmt パッケージの import
書き込み先 標準出力(Fprint系は書き込み先の設定が可能) 標準エラー
フォーマット 「%v」で指定されるデフォルトのフォーマット(Printf系はフォーマットの指定が可能) 「an implementation-specific way」実装固有の方法?

の3点が違いのようです。

補足・間違いなどご指摘ください。 :pray:

参考

builtin – The Go Programming Language
https://golang.org/pkg/fmt/
http://stackoverflow.com/questions/14680255/whats-the-difference-between-fmt-println-and-println-in-go


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。