# Домашнее задание к занятию "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 массива? Если да, то саму функцию надо будет переделать наверно.. Но в принципе более-менее понятно, как это делать.