Флаги в функциях в Go
В функциях можно использовать флаги
в неявном виде с помощью инструкции
return. Давайте посмотрим,
как это делается. Пусть у нас есть
следующая функция, проверяющая,
что все элементы среза положительные
числа:
package main
func isPositive(arr []int) bool {
flag := true
for _, elem := range arr {
if elem < 0 {
flag = false
}
}
return flag
}
func main() {
}
Давайте перепишем код функции с помощью неявного использования флагов:
package main
func isPositive(arr []int) bool {
for _, elem := range arr {
if elem < 0 {
return false
}
}
return true
}
func main() {
}
Как это работает: если в срезе найдется
нужный элемент - мы выйдем из функции
(и из цикла тоже) с помощью return.
Но если в срезе не найдется нужный элемент -
выхода из функции не произойдет и выполнение
дойдет до команды return true. И
получится, что функция вернет true
в знак того, что в срезе все элементы
положительные.
Сделайте функцию, которая параметром будет принимать срез с числами, и проверять, что все элементы в этом срезе являются четными числами.
Сделайте функцию, которая параметром будет принимать число и проверять, что все цифры этого числа являются нечетными.
Сделайте функцию, которая параметром будет принимать срез и проверять, есть ли в этом срезе два одинаковых элемента подряд.
Функция может отдать логическое значение и без цикла.
Ветки if, которые возвращают только true
или false, можно заменить самим сравнением:
package main
import "fmt"
func isEven(n int) bool {
if n%2 == 0 {
return true
}
return false
}
func main() {
fmt.Println(isEven(4)) // выведет true
fmt.Println(isEven(5)) // выведет false
}
Сокращенная форма отдает само сравнение:
package main
import "fmt"
func isEven(n int) bool {
return n%2 == 0
}
func main() {
fmt.Println(isEven(4)) // выведет true
fmt.Println(isEven(5)) // выведет false
}
Дана следующая функция:
func func(a, b string) bool {
if a == b {
return true
}
return false
}
Перепишите ее код в сокращенной форме согласно изученной теории.
Дана следующая функция:
func func(a, b int) bool {
if a != b {
return true
}
return false
}
Перепишите ее код в сокращенной форме согласно изученной теории.
Дана следующая функция:
func func(n int) bool {
if n == 10 {
return true
}
return false
}
Перепишите ее код в сокращенной форме согласно изученной теории.
Дана следующая функция:
func func(n int) bool {
if n >= 1 && n <= 5 {
return true
}
return false
}
Перепишите ее код в сокращенной форме согласно изученной теории.