# Домашнее задание к занятию "7.5. Основы golang" С `golang` в рамках курса, мы будем работать не много, поэтому можно использовать любой IDE. Но рекомендуем ознакомиться с [GoLand](https://www.jetbrains.com/ru-ru/go/). ## Задача 1. Установите golang. 1. Воспользуйтесь инструкций с официального сайта: [https://golang.org/](https://golang.org/). 2. Так же для тестирования кода можно использовать песочницу: [https://play.golang.org/](https://play.golang.org/). ## Ответ 1. Пока обошёлся песочницей, но дистрибутив скачал ;) ## Задача 2. Знакомство с gotour. У Golang есть обучающая интерактивная консоль [https://tour.golang.org/](https://tour.golang.org/). Рекомендуется изучить максимальное количество примеров. В консоли уже написан необходимый код, осталось только с ним ознакомиться и поэкспериментировать как написано в инструкции в левой части экрана. ## Ответ 2. Прошёл 1й урок, дошёл до циклов. Потихоньку пойду дальше, но время поджимает - постараюсь запараллелить. ## Задача 3. Написание кода. Цель этого задания закрепить знания о базовом синтаксисе языка. Можно использовать редактор кода на своем компьютере, либо использовать песочницу: [https://play.golang.org/](https://play.golang.org/). 1. Напишите программу для перевода метров в футы (1 фут = 0.3048 метр). Можно запросить исходные данные у пользователя, а можно статически задать в коде. Для взаимодействия с пользователем можно использовать функцию `Scanf`: ``` package main import "fmt" func main() { fmt.Print("Enter a number: ") var input float64 fmt.Scanf("%f", &input) output := input * 2 fmt.Println(output) } ``` 1. Напишите программу, которая найдет наименьший элемент в любом заданном списке, например: ``` x := []int{48,96,86,68,57,82,63,70,37,34,83,27,19,97,9,17,} ``` 1. Напишите программу, которая выводит числа от 1 до 100, которые делятся на 3. То есть `(3, 6, 9, …)`. В виде решения ссылку на код или сам код. ## Ответ 3. 1. ``` package main import "fmt" func main() { fmt.Print("Enter meters: ") var input_meters float64 fmt.Scanf("%f", &input_meters) output_feets := input_meters * 0.3048 fmt.Println(input_meters, "meters euqals", output_feets, "feet") } ``` 2. ``` package main import "fmt" func main() { x := []int{55, 96, 86, 68, 57, 82, 63, 70, 37, 34, 83, 27, 19, 97, 9, 17} minx := x[0] for i := range x { if x[i]<minx {minx=x[i]} } fmt.Println("Minimum number in array is", minx) } ``` 3. ``` package main import "fmt" func main() { for i := 1; i <= 100; i++ { if i%3==0 { fmt.Println(i) } } } ``` ## Задача 4. Протестировать код (не обязательно). Создайте тесты для функций из предыдущего задания. 1. Если бы я делал прошлое задание через функцию, назвал бы её transfer() и тест написал бы такой: ``` package main import "testing" func testMain(t *testing.T) { var output_feets float64 output_feets := transfer(10) if output_feets != 3.048 { t.Error("Expected 3.048, got ", output_feets) } } ``` 2. Если бы я делал прошлое задание через функцию, назвал бы её minnum() и тест написал бы такой: ``` package main import "testing" func minnumMain(t *testing.T) { x := []int{55, 96, 86, 68, 57, 82, 63, 70, 37, 34, 83, 27, 19, 97, 9, 17} minimum := minnum(x) if minimum != 9 { t.Error("Expected 9, got ", minimun) } } ``` 3. Тут не очень понимаю что сравнивать.. Возможно - стоит наполнить массив 3, 6, 9, и т.д. и сравнивать 2 массива? Если да, то саму функцию надо будет переделать наверно.. Но в принципе более-менее понятно, как это делать.