mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
add homework 7.5
This commit is contained in:
3
src/homework/07-terraform/7.5/golang/go.mod
Normal file
3
src/homework/07-terraform/7.5/golang/go.mod
Normal file
@@ -0,0 +1,3 @@
|
||||
module main
|
||||
|
||||
go 1.18
|
||||
28
src/homework/07-terraform/7.5/golang/main.go
Normal file
28
src/homework/07-terraform/7.5/golang/main.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"main/tasks"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var taskNum int
|
||||
fmt.Println("Enter number of task")
|
||||
fmt.Scan(&taskNum)
|
||||
|
||||
switch taskNum {
|
||||
case 1:
|
||||
tasks.MetersToFeet()
|
||||
break
|
||||
case 2:
|
||||
tasks.MinElement()
|
||||
break
|
||||
case 3:
|
||||
tasks.DivThree()
|
||||
break
|
||||
default:
|
||||
fmt.Println("Unknown task")
|
||||
break
|
||||
}
|
||||
}
|
||||
12
src/homework/07-terraform/7.5/golang/tasks/div_three.go
Normal file
12
src/homework/07-terraform/7.5/golang/tasks/div_three.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package tasks
|
||||
|
||||
import "fmt"
|
||||
|
||||
func DivThree() {
|
||||
fmt.Println("Numbers that are divisible by 3:")
|
||||
for i := 1; i <= 100; i++ {
|
||||
if i%3 == 0 {
|
||||
fmt.Printf("%d, ", i)
|
||||
}
|
||||
}
|
||||
}
|
||||
17
src/homework/07-terraform/7.5/golang/tasks/meters_to_feet.go
Normal file
17
src/homework/07-terraform/7.5/golang/tasks/meters_to_feet.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package tasks
|
||||
|
||||
import "fmt"
|
||||
|
||||
const metersInFeet float32 = 0.3048
|
||||
|
||||
func MetersToFeet() {
|
||||
var meters int
|
||||
|
||||
fmt.Println("Please, input value in meters:")
|
||||
fmt.Scan(&meters)
|
||||
fmt.Printf("%f", convert(meters))
|
||||
}
|
||||
|
||||
func convert(meters int) float32 {
|
||||
return float32(meters) / metersInFeet
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package tasks
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestConvert(t *testing.T) {
|
||||
meters := 3048
|
||||
var expectedResult float32 = 10000.0
|
||||
|
||||
result := convert(meters)
|
||||
|
||||
if result != expectedResult {
|
||||
t.Fatalf("convert result is %f, expected %f", result, expectedResult)
|
||||
}
|
||||
}
|
||||
23
src/homework/07-terraform/7.5/golang/tasks/min_element.go
Normal file
23
src/homework/07-terraform/7.5/golang/tasks/min_element.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package tasks
|
||||
|
||||
import "fmt"
|
||||
|
||||
func MinElement() {
|
||||
x := []int{48, 96, 86, 68, 57, 82, 63, 70, 37, 34, 83, 27, 19, 97, 9, 17}
|
||||
|
||||
fmt.Printf("Min element is %d\n", minElem(x))
|
||||
}
|
||||
|
||||
func minElem(list []int) int {
|
||||
min := list[0]
|
||||
|
||||
for i := 1; i < len(list); i++ {
|
||||
current := list[i]
|
||||
|
||||
if current < min {
|
||||
min = current
|
||||
}
|
||||
}
|
||||
|
||||
return min
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package tasks
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func MinElemTest(t *testing.T) {
|
||||
list := []int{1, 2, 3, 4}
|
||||
expectedResult := 1
|
||||
actualResult := minElem(list)
|
||||
|
||||
if expectedResult != actualResult {
|
||||
t.Fatalf("minElem result is %d, expected %d", actualResult, expectedResult)
|
||||
}
|
||||
}
|
||||
BIN
src/homework/07-terraform/7.5/gotour.png
Normal file
BIN
src/homework/07-terraform/7.5/gotour.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 203 KiB |
93
src/homework/07-terraform/7.5/readme.md
Normal file
93
src/homework/07-terraform/7.5/readme.md
Normal file
@@ -0,0 +1,93 @@
|
||||
Выполнение [домашнего задания](https://github.com/netology-code/virt-homeworks/blob/master/07-terraform-05-golang/README.md)
|
||||
по теме "7.5. Основы golang".
|
||||
|
||||
## Q/A
|
||||
|
||||
### Задание 1
|
||||
|
||||
> Установите golang
|
||||
>
|
||||
> 1. Воспользуйтесь инструкций с официального сайта: [https://golang.org/](https://golang.org/).
|
||||
> 2. Так же для тестирования кода можно использовать песочницу: [https://play.golang.org/](https://play.golang.org/).
|
||||
|
||||
```shell
|
||||
go version
|
||||
go version go1.18.3 linux/amd64
|
||||
```
|
||||
|
||||
### Задание 2
|
||||
|
||||
> Знакомство с gotour.
|
||||
>
|
||||
> У Golang есть обучающая интерактивная консоль [https://tour.golang.org/](https://tour.golang.org/).
|
||||
> Рекомендуется изучить максимальное количество примеров. В консоли уже написан необходимый код,
|
||||
> осталось только с ним ознакомиться и поэкспериментировать как написано в инструкции в левой части экрана.
|
||||
|
||||

|
||||
|
||||
### Задание 3
|
||||
|
||||
> Написание кода
|
||||
>
|
||||
> Цель этого задания закрепить знания о базовом синтаксисе языка. Можно использовать редактор кода
|
||||
> на своем компьютере, либо использовать песочницу: [https://play.golang.org/](https://play.golang.org/).
|
||||
>
|
||||
> 1. Напишите программу для перевода метров в футы (1 фут = 0.3048 метр). Можно запросить исходные данные
|
||||
> у пользователя, а можно статически задать в коде.
|
||||
> Для взаимодействия с пользователем можно использовать функцию `Scanf`:
|
||||
> ```go
|
||||
> 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, …)`.
|
||||
>
|
||||
> В виде решения ссылку на код или сам код.
|
||||
|
||||
1. Программа для перевода метров в футы: [meters_to_feet.go](./golang/tasks/meters_to_feet.go).
|
||||
2. Программа для нахождения наименьшего элемента в списке: [min_element.go](./golang/tasks/min_element.go)
|
||||
3. Программа для вывода чисел, которые деляться на 3: [div_three.go](./golang/tasks/div_three.go)
|
||||
|
||||
Для запуска программ нужно проделать следующие шаги:
|
||||
|
||||
1. Перейти в директорию [golang](./golang/)
|
||||
```shell
|
||||
cd golang
|
||||
```
|
||||
1. Запустить программу:
|
||||
```shell
|
||||
go run main.go
|
||||
```
|
||||
1. Ввести в консоль число от 1 до 3, в зависимости от необходимой программы
|
||||
|
||||
### Задание 4
|
||||
|
||||
> Протестировать код
|
||||
>
|
||||
> Создайте тесты для функций из предыдущего задания.
|
||||
|
||||
Написал тесты для [программы 1: meters_to_feet](./golang/tasks/meters_to_feet_test.go) и [программы 2: min_element](./golang/tasks/min_element_test.go).
|
||||
|
||||
Запуск тестов:
|
||||
|
||||
```shell
|
||||
cd golang/tasks
|
||||
go test
|
||||
PASS
|
||||
ok main/tasks 0.003s
|
||||
```
|
||||
Reference in New Issue
Block a user