Чем Print и Printf отличаются друг от друга в Go? - PullRequest
0 голосов
/ 13 сентября 2018

Я новичок в Go и понимаю простой синтаксис и функции.Здесь я запутался между функцией Print и Printf.Вывод этих функций аналогичен, так в чем же разница между этими двумя функциями?

package main
import (
    "fmt"
    "bufio"
    "os"
)
func main(){
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter Text: ")
    str, _ := reader.ReadString('\n')
    fmt.Printf(str)
    fmt.Print(str)
}

Я прочитал https://golang.org/pkg/fmt/#Print, чтобы понять, но я не понял этого.

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

Метод Printf принимает отформатированную строку, для которой коды типа «% s» и «% d» в этой строке указывают точки вставки для значений.Эти значения затем передаются в качестве аргументов.

Пример:

package main

import (
"fmt"      
)

var(
a = 654
b = false
c   = 2.651
d  = 4 + 1i
e   = "Australia"
f = 15.2 * 4525.321
)

func main(){    
fmt.Printf("d for Integer: %d\n", a)
fmt.Printf("6d for Integer: %6d\n", a)

fmt.Printf("t for Boolean: %t\n", b)
fmt.Printf("g for Float: %g\n", c)
fmt.Printf("e for Scientific Notation: %e\n", d)
fmt.Printf("E for Scientific Notation: %E\n", d)
fmt.Printf("s for String: %s\n", e)
fmt.Printf("G for Complex: %G\n", f)

fmt.Printf("15s String: %15s\n", e)
fmt.Printf("-10s String: %-10s\n",e)

t:= fmt.Sprintf("Print from right: %[3]d %[2]d %[1]d\n", 11, 22, 33)
fmt.Println(t)  
}
0 голосов
/ 13 сентября 2018

Согласно документации

Печать: будет печатать числовые переменные и не будет включать разрыв строки в конце.

Printf: не будет печатать числовые переменные и не будет содержать разрыв строки в конце.

Printf предназначен для печати форматированных строк. И это может привести к более читаемой печати. ​​

Для более подробной информации посетите этот учебник .

0 голосов
/ 13 сентября 2018

Из документов о печати :

Для каждой функции, похожей на Printf, есть также функция Print, которая не принимает формат и эквивалентна произнесению% v для каждого операнда. Другой вариант Println вставляет пробелы между операндами и добавляет новую строку.

Таким образом, Printf принимает строку формата, позволяя вам указать компилятору, в каком формате выводить ваши переменные, и поместить их в строку с другой информацией, тогда как Print просто выводит переменные такими, какие они есть. Обычно вы предпочитаете использовать fmt.Printf, если только вы не отлаживаете и не хотите быстро выводить некоторые переменные.

В вашем примере вы отправляете строку, которую хотите напечатать, как строку формата по ошибке, что сработает, но не предназначено для использования. Если вы просто хотите напечатать одну переменную в формате по умолчанию, то лучше использовать Print.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...