2013-07-16 25 views
5

Przeszukuję dzisiejszy kod, który zaskoczył mnie "drukiem", który nie został zdefiniowany. Po krótkiej zabawie stwierdziłem, że można po prostu użyć druku, aby zrzucić rzeczy na konsolę, np. Porzucić na konsolę, np.go ma wbudowaną funkcję "drukowania"?

print("Hello World") 

Więc wydaje się być pewnego rodzaju wbudowane, ale nie mogę znaleźć żadnego odniesienia do niej (i pomyślałem zasady Go były małe funkcje nigdy importowane tak)

Czy to dobrze znana, a jeśli więc czy są inne funkcje związane z wygodą, czy jestem po prostu bardzo zmieszany?

Jeszcze jeden punkt - ten wydruk nie używa magicznych sztuczek formatowania (% v) fmt.Printf - Jeśli drukujesz mapy lub znaki, wydaje się, że masz ich adres.

Odpowiedz

8

Masz rację, a ktoś inny już na nią narzekał. Został dodany do wbudowanej dokumentacji dla następnej wersji Go (go1.2).

Package builtin

func print

func print(args ...Type) 

print wbudowana funkcja formatuje swoje argumenty w sposób realizacji konkretnych i wypisze wynik na standardowe wyjście błędów. Drukuj jest przydatny do ładowania i debugowania; nie ma gwarancji, że pozostanie w tym języku.

func println

func println(args ...Type) 

println wbudowana funkcja formatuje swoje argumenty w sposób realizacji konkretnych i wypisze wynik na standardowe wyjście błędów. Spacje są zawsze dodawane między argumentami i dołączany jest znak nowej linii. Println jest przydatny do ładowania i debugowania; nie gwarantuje się, że pozostanie w tym języku.

+0

Świetnie! W międzyczasie możesz zadeklarować 'const print: = fmt.Println' –

+3

@ColonelPanic:' const print: = fmt.Println' jest błędem kompilatora. 'fmt.Println' nie jest stałą. Napisz 'var print = fmt.Println' lub' print: = fmt.Println'. – peterSO

+0

'print' i' println' są w Go od samego początku. Są one zdefiniowane w specyfikacji językowej. – user102008

0

Dzięki wszystkim za szybką odpowiedź

Co wyrzucił mnie jest pakiet „wbudowane” nie definiuje drukiem (w wersji używam tak)

Wydaje się niebezpieczną cechą na ogół polegać, więc udam, że nigdy go nie widziałem i kontynuuję fmt.Print ....

+0

Nie trzeba ich definiować w niektórych pakietach.Są one zdefiniowane w specyfikacji językowej. – user102008

Powiązane problemy