суббота, 5 января 2019 г.

Основы Go: оператор if

Оператор if

Операторы if в Go такие же как и циклы for: выражение не должно быть заключено в круглые скобки ( ), но фигурные скобки { } обязательны.

package main

import (
    "fmt"
    "math"
)

func sqrt(x float64) string {
    if x < 0 {
        return sqrt(-x) + "i"
    }
    return fmt.Sprint(math.Sqrt(x))
}

func main() {
    fmt.Println(sqrt(2), sqrt(-4))
}

Вывод:

1.4142135623730951 2i

If с краткой инструкцией

Так же как и for, оператор if может начинаться с инструкции, которая будет выполнена перед проверкой условия.

Переменные объявленные в этом блоке доступны только в области видимости, которая существует до конца if.

package main

import (
    "fmt"
    "math"
)

func pow(x, n, lim float64) float64 {
    if v := math.Pow(x, n); v < lim {
        return v
    }
    return lim
}

func main() {
    fmt.Println(
        pow(3, 2, 10),
        pow(3, 3, 20),
    )
}

Вывод:

9 20

If и else

Переменные объявленные внутри краткой инструкции if также доступны внутри всех else блоков.

(Оба вызова pow выполняются и возвращают результат перед тем, как происходит вызов fmt.Println в main.)

package main

import (
    "fmt"
    "math"
)

func pow(x, n, lim float64) float64 {
    if v := math.Pow(x, n); v < lim {
        return v
    } else {
        fmt.Printf("%g >= %g\n", v, lim)
    }
    return lim
}

func main() {
    fmt.Println(
        pow(3, 2, 10),
        pow(3, 3, 20),
    )
}

Вывод:

27 >= 20
9 20


Читайте также:


Комментариев нет:

Отправить комментарий