Вы неверно поняли, что я называю "атомарностью" в моем первом посте.
В виду многопоточности программ и глобальных STDOUT, STDERR запись строк не должна быть разбитой на несколько printf()-подобных вызовов, а только один printf(). Поэтому и стремлюсь написать удобный код по сборке одной большой строки, для ее записи с помощью fmt.Printf().
пока написал так:
func printTitle(srcFilename, dstFilename string) {
var buf bytes.Buffer
fmt.Fprintln(&buf, "Program parameters")
dir := filepath.Dir(srcFilename)
fmt.Fprintf(&buf, "\tWork dir: \"%s\"\n", dir)
if name, err := filepath.Rel(dir, srcFilename); err == nil {
fmt.Fprintf(&buf, "\tSource: %s\n", name)
}
if name, err := filepath.Rel(dir, dstFilename); err == nil {
fmt.Fprintf(&buf, "\tResult: %s\n", name)
}
fmt.Println(buf.String())
}
работает, но очень громоздко! ;(((
воскресенье, 29 декабря 2013 г., 16:55:54 UTC+4 пользователь Alexey Palazhchenko написал: