Golang. Вывод суммы в рублях и копейках
Всем привет, только начал изучать go не ругайте сильно. Решил задачку, но думаю что есть более элегантное решение с выводом, подскажите пожалуйста как бы Вы решили ее.
Текст задачи:
Напишите программу, которая считывает строку и выводит ее предполагаемую цену, 1 символ = 23 копейки в следующем формате:
Y коп. - если цена не дотягивает до рубля.
X р. Y коп. - если цена превышает 1 рубль.
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
var praic float64 = 0.23
var samplText string
var result int
fmt.Scan(&samplText)
result = utf8.RuneCountInString(samplText)
var resultRub float64 = float64(result) * praic
var RUB int = int(resultRub)
if resultRub > 1.00 {
fmt.Printf("%d р. %d коп.", int64(RUB), int((resultRub-float64(RUB))*100))
} else {
fmt.Printf("%d коп.", int(resultRub*100))
}
}
Всем привет, только начал изучать go не ругайте сильно. Решил задачку, но думаю что есть более элегантное решение с выводом, подскажите пожалуйста как бы Вы решили ее.
Текст задачи:
Напишите программу, которая считывает строку и выводит ее предполагаемую цену, 1 символ = 23 копейки в следующем формате:
Y коп. - если цена не дотягивает до рубля.
X р. Y коп. - если цена превышает 1 рубль.
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
var praic float64 = 0.23
var samplText string
var result int
fmt.Scan(&samplText)
result = utf8.RuneCountInString(samplText)
var resultRub float64 = float64(result) * praic
var RUB int = int(resultRub)
if resultRub > 1.00 {
fmt.Printf("%d р. %d коп.", int64(RUB), int((resultRub-float64(RUB))*100))
} else {
fmt.Printf("%d коп.", int(resultRub*100))
}
}
❓ Что произойдет, если написать //go:generate перед функцией в коде?
Anonymous Poll
2%
Код не скомпилируется
52%
Go выполнит указанную команду при генерации кода
13%
Go проигнорирует этот комментарий
9%
Это специальный комментарий для работы с интерфейсами
26%
Узнать ответ
❓Какой принцип REST API нарушается, если сервер хранит состояние сеанса пользователя?
Anonymous Poll
2%
Uniform Interface
78%
Stateless
6%
Cacheable
2%
Layered System
15%
Узнать ответ
❓Как передать неограниченное количество аргументов разных типов
Anonymous Poll
8%
func myFunc(args ...int)
13%
func myFunc(args []interface{})
79%
func myFunc(args ...interface{})
6%
Узнать ответ
❓ Что делает ключевое слово fallthrough в switch-выражениях
Anonymous Poll
10%
Завершает выполнение switch сразу после текущего case
83%
Позволяет передавать управление следующему case
2%
Прерывает выполнение всей программы
6%
Используется для обработки ошибок
Свой VPN на golang
Решил сделать свой VPN на golang. В принципе основную часть сделал:
Программа создаёт виртуальный интерфейс TUN
Подключается к VPN серверу по UDP
И передает данные из TUN на сервер, а с сервера в TUN
На сервере примерно тот же самый сценарий. Как я понял, это уже является VPN (только без шифрования, но это я добавлю). Хотелось бы дать клиенту доступ в интернет, то есть что бы на сервере IP пакеты отправлялись дальше в сеть и с сети клиенту. Это я и не понимаю, как сделать. Всё делаю под Windows.
Решил сделать свой VPN на golang. В принципе основную часть сделал:
Программа создаёт виртуальный интерфейс TUN
Подключается к VPN серверу по UDP
И передает данные из TUN на сервер, а с сервера в TUN
На сервере примерно тот же самый сценарий. Как я понял, это уже является VPN (только без шифрования, но это я добавлю). Хотелось бы дать клиенту доступ в интернет, то есть что бы на сервере IP пакеты отправлялись дальше в сеть и с сети клиенту. Это я и не понимаю, как сделать. Всё делаю под Windows.
❓Можно ли использовать fallthrough в default-блоке switch
Anonymous Poll
36%
Да
52%
Нет
14%
Узнать ответ
❓ Что произойдёт, если оставить select без case
Anonymous Poll
25%
Пропустит select
37%
Зависнет навсегда
29%
Код не скомпилируется
11%
Узнать ответ
❓Какой метод используется для выполнения SQL-запросов без возврата данных
Anonymous Poll
13%
Query()
77%
Exec()
7%
RunSQL()
5%
QueryRow()
❓ Можно ли изменить символ в строке по индексу в Go?
Anonymous Poll
12%
Да, можно, строки в Go изменяемы, как и массивы.
7%
Да, но только если строка содержит ASCII-символы, а не Unicode
6%
Можно, но только если строка объявлена с помощью var вместо const
71%
Нет, строки в Go неизменяемы, попытка изменить символ вызовет ошибку компиляции.
7%
Узнать ответ
❓Что делает тег json:"field_name,omitempty"
Anonymous Poll
7%
Заменяет нулевые значения на null в JSON
5%
Делает поле обязательным при сериализации
79%
Исключает поле из JSON, если оно пустое (0, "", false, nil)
4%
Заменяет нулевые значения на null в JSON
8%
Узнать ответ
❓ Какова временная сложность основных операций в AVL-дереве
Anonymous Poll
6%
O(n)
57%
O(log n)
20%
O(n log n)
2%
O(1)
19%
Узнать ответ
❓Какое утверждение про сортировки верное?
Anonymous Poll
8%
sort.Slice сохраняет относительный порядок элементов
41%
sort.Slice не гарантирует сохранение порядка одинаковых элементов
14%
sort.Slice и sort.SliceStable используют одинаковый алгоритм, но с разными параметрами
5%
sort.SliceStable используется для сортировки только числовых данных
39%
Узнать ответ
❓Сколько элементов хранится в одном bucket в map
Anonymous Poll
7%
4
68%
8
3%
12
12%
16
13%
Узнать ответ
❓Как singleflight обрабатывает ошибки, если объединённый вызов завершился с ошибкой?
Anonymous Poll
6%
Автоматически повторяет вызов до успешного завершения.
2%
Завершает работу приложения.
3%
Игнорирует ошибку и возвращает nil.
54%
Возвращает одну и ту же ошибку всем горутинам, ожидавшим результат.
35%
Узнать ответ