Глиф Учебники

Итоговый тест

Go · 20 вопросов

Двадцать вопросов по всем урокам курса. В вопросах с кодом считайте, что программа лежит в модуле и запускается командой go run . в Go 1.22 или новее. Если ответ не получается, вернитесь к уроку по теме вопроса.

1. Какой командой создают модуль в папке нового проекта?
2. Что должно быть в файле, из которого собирается исполняемая программа?
3. Какая запись допустима вне функций, на уровне пакета?
4. Что выведет программа?
Go
package main

import "fmt"

func main() {
    a, b := 7, 2
    fmt.Println(a/b, a%b, float64(a)/float64(b))
}
5. Почему не соберётся строка total := count * price, где count int, а price float64?
6. Что выведет программа?
Go
package main

import "fmt"

func main() {
    var n int
    var s string
    var ok bool
    fmt.Printf("%d %q %t\n", n, s, ok)
}
7. Как прочитать с клавиатуры строку вместе с пробелами, например «Анна Иванова»?
8. Что выведет fmt.Printf("[%5.2f]\n", 3.14159)?
9. Как в Go записать цикл, который повторяется, пока n > 0?
10. Что выведет программа?
Go
package main

import "fmt"

func main() {
    for i := range 4 {
        if i == 2 {
            continue
        }
        fmt.Print(i)
    }
    fmt.Println()
}
11. Что выведет программа?
Go
package main

import "fmt"

func main() {
    s := []int{10, 20, 30, 40, 50}
    t := s[1:4]
    t[0] = 99
    fmt.Println(len(t), s[1])
}
12. Функцию из своего пакета storage нужно вызывать из пакета main. Как её назвать?
13. Как проверить, есть ли в m map[string]int ключ "ok"?
14. Что случится при записи m["a"] = 1, если map объявлена как var m map[string]int?
15. Как принято обрабатывать ошибку от функции, которая возвращает (int, error)?
16. Что выведет программа?
Go
package main

import "fmt"

type Counter struct {
    n int
}

func (c *Counter) Inc() {
    c.n++
}

func (c Counter) Reset() {
    c.n = 0
}

func main() {
    var c Counter
    c.Inc()
    c.Inc()
    c.Reset()
    fmt.Println(c.n)
}
17. Тип Rect имеет метод Area() float64. Что нужно, чтобы он подходил под interface { Area() float64 }?
18. Зачем в программе с горутинами sync.WaitGroup?
19. Что произойдёт при запуске программы?
Go
package main

import "fmt"

func main() {
    ch := make(chan int)
    ch <- 1
    fmt.Println(<-ch)
}
20. Что выведет программа?
Go
package main

import "fmt"

func main() {
    defer fmt.Println("A")
    defer fmt.Println("B")
    fmt.Println("C")
}