В чём разница между fmt.Scan и fmt.Scanln, между fmt.Print и fmt.Println?

В языке программирования Go пакет fmt предоставляет функции для форматированного ввода/вывода. Два из самых распространенных метода этого пакета - fmt.Scan и fmt.Scanln, а также fmt.Print и fmt.Println. Данные функции предназначены для чтения пользовательского ввода и вывода информации на экран.

Разница между fmt.Scan и fmt.Scanln заключается в способе чтения ввода. Функция fmt.Scan считывает ввод до первого пробельного символа (пробела, табуляции или новой строки). Она ожидает, что вы введете несколько значений, разделенных пробелами, и присваивает их переменным, переданным в качестве аргументов. Например:

var num1 int
var num2 int
fmt.Scan(&num1, &num2)

Функция fmt.Scanln, с другой стороны, считывает ввод до первого символа новой строки. Она ожидает ввода одной строки и пытается присвоить его параметру или переменной, переданной в качестве аргумента. Например:

var name string
fmt.Scanln(&name)

Разница между fmt.Print и fmt.Println заключается в символе, добавляемом в конце строки при выводе. Функция fmt.Print выводит указанные значения без добавления новой строки в конце. Функция fmt.Println, с другой стороны, добавляет новую строку в конце вывода. Например:

fmt.Print("Hello")
fmt.Println("World")

Вывод fmt.Print будет выглядеть так: "HelloWorld". Вывод fmt.Println будет выглядеть так:

Hello
World

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