2013-02-04 4 views

Antwort

40

println ist eine eingebaute Funktion (in die Laufzeit), die weggehen kann, während das fmt Paket in der Standardbibliothek ist, die persistent bleibt. Siehe the spec zu diesem Thema.

Für Spricht Entwickler ist es praktisch, ein println ohne Abhängigkeiten zu haben, aber der Weg zu gehen, um das fmt Paket oder etwas ähnliches (log zum Beispiel) verwenden.

Wie Sie können see in the implementation die print(ln) Funktionen sind nicht entworfen, um auch nur entfernt einen anderen Ausgabemodus zu unterstützen und sind vor allem ein Debug-Tool.

66

auf nemo Antwort zu bauen:

println eine Funktion in die Sprache integriert ist. Es befindet sich im Bootstrapping-Bereich der spec. Von der Verbindung:

Aktuelle Implementierungen stellen einige eingebaute nützliche Funktionen während des Urladens zur Verfügung. Diese Funktionen sind aus Gründen der Vollständigkeit dokumentiert. Es ist jedoch nicht garantiert, dass sie in der Sprache bleiben. Sie geben kein Ergebnis zurück.

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 

So sind sie für Entwickler nützlich, weil sie Abhängigkeiten fehlt (in den Compiler gebaut wird), aber nicht in der Produktion Code. Es ist auch wichtig zu beachten, dass print und printlnBericht an stderr, nicht stdout melden.

Die Familie, die von fmt zur Verfügung gestellt wird, sind jedoch in Produktionscode erstellt. Sie melden vorhersehbar stdout, wenn nicht anders angegeben. Sie sind vielseitiger (fmt.Fprint* können zu jedem io.Writer, wie os.Stdout, os.Stderr, oder sogar einen net.Conn-Typ melden.) Und sind nicht implementierungsspezifisch. Die meisten Pakete, die für die Ausgabe zuständig sind, haben fmt als Abhängigkeit, z. B. log. Wenn Ihr Programm etwas in der Produktion ausgibt, ist fmt höchstwahrscheinlich das Paket, das Sie möchten.

+4

Diese Antwort sollte akzeptiert werden. – Asim

1

Für den Unterschied, this ist ein Beispiel.

println() druckt einen Zeiger auf die Adresse des Funktionstests.

fmt.Println() druckt die Adresse der Funktion.

Verwandte Themen