2013-02-04 7 views

Odpowiedz

40

println to wbudowana funkcja (do środowiska wykonawczego), która może zniknąć, natomiast pakiet fmt znajduje się w standardowej bibliotece, która będzie się utrzymywać. Zobacz the spec na ten temat.

Dla programistów języka jest przydatny do println bez zależności, ale droga jest użycie pakietu fmt lub coś podobnego (log na przykład).

Tak jak można see in the implementation, funkcje print(ln) nie są zaprojektowane do zdalnego wsparcia innego trybu wyjściowego i są głównie narzędziem do debugowania.

66

budować na odpowiedź Nemo:

println to funkcja wbudowana w języku. Jest w sekcji Bootstrapping w spec. Od linku:

Obecne implementacje zapewniają kilka wbudowanych funkcji przydatnych podczas ładowania. Funkcje te są udokumentowane pod kątem kompletności , ale nie można zagwarantować, że pozostaną w tym języku. Nie zwracają wyniku w postaci .

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 

Zatem są one użyteczne dla programistów, ponieważ brakuje im zależnościami (jest wbudowane w kompilator), ale nie w kodzie produkcyjnym. Ważne jest również, aby zauważyć, że print i printlnraportować do , a nie stdout.

Rodzina dostarczona przez fmt została jednak zbudowana tak, aby była w kodzie produkcyjnym. Zgłaszają się przewidywalnie do stdout, chyba że podano inaczej. Są bardziej uniwersalne (fmt.Fprint* mogą raportować do dowolnego io.Writer, na przykład os.Stdout, os.Stderr lub nawet net.Conn) i nie są specyficzne dla implementacji.

Większość pakietów odpowiedzialnych za wyjście ma fmt jako zależność, na przykład log. Jeśli twój program będzie produkować coś w produkcji, najprawdopodobniej jest to pakiet, który chcesz.

+4

Ta odpowiedź powinna zostać przyjęta. – Asim

1

Jeśli chodzi o różnicę, przykładem jest this.

drukuje wskaźnik wskazuje adres testu funkcji.

fmt.Println() drukuje adres funkcji.

Powiązane problemy