2013-07-16 17 views
5

Oggi mi sono imbattuto in qualche codice che mi ha sorpreso con una 'stampa' che non è stata definita. Dopo un po 'di gioco ho determinato che è possibile utilizzare una stampa per scaricare le cose nella consolego ha una funzione di "stampa" integrata?

ad es.

print("Hello World") 

così sembra essere una sorta di incorporato, ma non riesco a trovare alcun riferimento ad esso (e ho pensato le regole go erano funzioni minuscole mai importati in ogni caso)

E` ben noto e se così ci sono altre funzioni di convenienza o sono solo molto, molto confuso?

Un altro punto: questa stampa non usa i trucchi di formattazione magica (% v) di fmt.Printf - Se si stampano mappe o strutture, sembra che si ottenga il loro indirizzo.

risposta

8

Hai ragione, e qualcun altro si è già lamentato. È stato aggiunto alla documentazione integrata per la prossima versione di Go (go1.2).

Package builtin

func print

func print(args ...Type) 

La print funzione built-in formati i suoi argomenti in modo specifico dell'implementazione e scrive il risultato sullo standard error. La stampa è utile per il bootstrap e il debug; non è garantito rimanere nella lingua.

func println

func println(args ...Type) 

La println funzione built-in formati i suoi argomenti in modo specifico dell'implementazione e scrive il risultato sullo standard error. Gli spazi vengono sempre aggiunti tra gli argomenti e viene aggiunta una nuova riga. Println è utile per il bootstrap e il debug; non è garantito il nella lingua.

+0

Ottimo! Nel frattempo si potrebbe dichiarare 'const print: = fmt.Println' –

+3

@ColonelPanic:' const print: = fmt.Println' è un errore del compilatore. 'fmt.Println' non è una costante. Scrivi 'var print = fmt.Println' o' print: = fmt.Println'. – peterSO

+0

'print' e' println' sono in Go dall'inizio. Sono definiti nelle specifiche del linguaggio. – user102008

0

Grazie a tutti per la rapida risposta

Cosa mi ha buttato fuori è il pacchetto 'incorporato' non definisce la stampa (nella versione che sto usando in ogni caso)

Sembra una caratteristica pericolosa per dipendere in generale quindi farò finta di non averlo mai visto e continuerò a fmt.Stampa ....

+0

Non è necessario che siano definiti in alcuni pacchetti.Sono definiti nelle specifiche del linguaggio. – user102008