Goでは、何かを印刷したい場合、次のようにします。
import "fmt"
func main(){
fmt.Println("Hello world!")
}
しかし、fmt
をインポートしなくても同じことができることがわかりました。
func main(){
println("Hello world!")
}
誰か説明していただけますか?
Nemoの答えに基づいて作成するには:
println
は、言語に組み込まれた関数です。 spec のBootstrappingセクションにあります。リンクから:
現在の実装は、ブートストラップ中に役立ついくつかの組み込み関数を提供します。これらの関数は完全性のために文書化されていますが、言語にとどまることが保証されていません。結果を返しません。
Function Behavior print prints all arguments; formatting of arguments is implementation-specific println like print but prints spaces between arguments and a newline at the end
したがって、依存関係(コンパイラーに組み込まれている)がないため、開発者にとっては便利ですが、実動コードにはありません。 print
とprintln
は、stderr
ではなく、stdout
に報告することに注意することも重要です。
ただし、fmt
が提供するファミリは、製品コードに組み込まれています。特に指定しない限り、それらはstdout
に予測可能な形で報告します。より多用途です(fmt.Fprint*
は任意のio.Writer
、 といった os.Stdout
、os.Stderr
、またはnet.Conn
type。)、実装固有ではありません。
出力を担当するほとんどのパッケージには、fmt
などの依存関係としてlog
があります。プログラムが本番環境で何かを出力する場合、fmt
がおそらくあなたが望むパッケージです。