Flant / Флант - 4 (техничка)
Актуальность: 1 кв 2026
Задача: Что произойдет при запуске этого кода? Завершится ли программа корректно? Исправьте ошибки. go/errors-panic
Заголовок раздела «Задача: Что произойдет при запуске этого кода? Завершится ли программа корректно? Исправьте ошибки. go/errors-panic»func main() { var wg sync.WaitGroup c := make(chan string, 3)
for i := 0; i < 5; i++ { wg.Add(1) go func(i int) { defer wg.Done() c <- "Goroutine " + strconv.Itoa(i) }(i) }
for { select { case v := <-c: fmt.Println(v) } }
wg.Wait() close(c)}Задача: Что выведет программа при запуске? Всегда ли вывод будет одинаковым? Исправьте ошибку. go/errors-panic
Заголовок раздела «Задача: Что выведет программа при запуске? Всегда ли вывод будет одинаковым? Исправьте ошибку. go/errors-panic»func run() { ch := make(chan string) go func() { for m := range ch { fmt.Println("processed:", m) } }()
ch <- "cmd.1 " ch <- "cmd.2 "}
func main() { run()}Задача: Что выведет программа при запуске? go/puzzles
Заголовок раздела «Задача: Что выведет программа при запуске? go/puzzles»ch := make(chan string)done := make(chan struct{})
go func() { for { select { case msg := <-ch: fmt.Println("processed:", msg) case <-done: fmt.Println("stopped ") return } }}()
ch <- "cmd.1 "ch <- "cmd.2 "done <- struct{}{}Задача: Будет ли когда-нибудь напечатано «Hello world!» при запуске этого кода? go/basics
Заголовок раздела «Задача: Будет ли когда-нибудь напечатано «Hello world!» при запуске этого кода? go/basics»func main() { runtime.GOMAXPROCS(1)
go func() { fmt.Println("Hello world!") }()
for { }}Задача: Что выведет программа? go/stdlib-tooling
Заголовок раздела «Задача: Что выведет программа? go/stdlib-tooling»x := []int{}x = append(x, 0, 1, 2)y := append(x, 3)z := append(x, 4)fmt.Println(y, z)x := []int{0, 1, 2, 3}y := append(x, 4)z := append(x, 5)fmt.Println(y, z)Задача: Что выведет программа? go/puzzles
Заголовок раздела «Задача: Что выведет программа? go/puzzles»func main() { a := 0 defer fmt.Println(a) defer func() { a++ fmt.Println(a) }()}Задача: Исправьте ошибку. go/errors-panic
Заголовок раздела «Задача: Исправьте ошибку. go/errors-panic»v:=5p:=&vchangePointer(p)fmt.Println(*p) // 5
func changePointer(p*int) {v:=3p= &v}Задача: Что выведет программа? go/puzzles
Заголовок раздела «Задача: Что выведет программа? go/puzzles»type errorString struct { s string}
func (e errorString) Error() string { return e.s}
func checkErr(err error) { fmt.Println(err == nil)}
func main() { var e1 error checkErr(e1)
var e2 *errorString checkErr(e2)
e2 = &errorString{} checkErr(e2)
var e3 *errorString = nil checkErr(e3)}Задача: Что выведет программа? Исправьте ошибку. go/errors-panic
Заголовок раздела «Задача: Что выведет программа? Исправьте ошибку. go/errors-panic»numbers := []*int{}for i := 0; i < 5; i++ { numbers = append(numbers, &i)}
for _, p := range numbers { fmt.Printf("%d ", *p)}numbers := []*int{}for i := 0; i < 5; i++ { v := i numbers = append(numbers, &v)}for _, p := range numbers { fmt.Printf("%d ", *p)}Задача: Почему так происходит? go/basics
Заголовок раздела «Задача: Почему так происходит? go/basics»type Data struct { Age int `json:"age "` name string `json:"name "`}
func testData() { in := Data{33, "Ivan "} fmt.Printf("%#v\n ", in) // {Age:33, name:"Ivan "}
encoded, _ := json.Marshal(in) fmt.Println(string(encoded)) // {"age ":33}
var out Data json.Unmarshal(encoded, &out) fmt.Printf("%#v\n ", out) // {Age:33, name:""} - пустой name}
func main() { testData()}