2016-12-30 2 views
-2

Hier ist mein Code: Paket Hauptwarum die Reihenfolge der Ausgabe geändert wird, wenn `log.Println` und` fmt.Println` verwendet werden?

import "log" 
import "fmt" 

func main() { 
    var a string = "initail" 
    log.Println(a) 
    var b, c int = 1, 2 
    fmt.Println(b, c) 
} 

Die Ausgabe lautet:

1 2 
2016/12/30 14:22:58 initail 

Ich verstehe also nicht, warum die Bestellung des Ausgangs? warum log.Println ist langsamer als fmt.Println?

+0

wie sehr spezieller Fall sieht, vor allem wegen abd bufferig am Ende des Prozesses gespült zu werden. Hier ist ein Link https://play.golang.org/p/xWFTHKaKzR –

+0

Kann Ihren Link nicht öffnen, es ist verboten. – BlackMamba

+0

Ich habe den gleichen Link in einem anwer ich unten gepostet. Überprüfen und akzeptieren Sie, wenn das Ihr Problem löst –

Antwort

3

Der einzige Unterschied zwischen den in Bezug auf seine Druckverhalten ist

  • log.Println schreibt Stderr
  • fmt.Println schreibt Stdout

Beide nicht gepuffert werden. Die Tatsache, dass StdOut vor StdError kam, ist spezifisch für Ihr Terminal oder Ihre Umgebung.

Hier ist ein Spiel Link https://play.golang.org/p/0cukg_a9GR

+0

@blackmamba Bitte akzeptieren Sie die Antwort, wenn es Ihnen geholfen hat –

Verwandte Themen