Начал читать книгу «Язык программирования Go» Донован/Керниган и буквально на первом примере у меня начинаются проблемы с Донованом, т.к. Кернигана там только для названия взяли.
// Echo1 prints its command-line arguments.
package main
import (
"fmt"
"os"
)
func main() {
var s, sep string
for i := 1; i < len(os.Args); i++ {
s += sep + os.Args[i]
sep = " "
}
fmt.Println(s)
}
Ясно, что s и sep начинают существовать при инициализации с пустым значением (""), но почему он начинает использовать sep до присвоения ему значения пробела? Красоты ради, чтобы короткая строка была ниже длинной или что? Чего использовать переменную до присвоения ей рабочего значения? Это допустимо, но разве это правильно?