68 lines
1.1 KiB
Markdown
68 lines
1.1 KiB
Markdown
|
---
|
||
|
title: If in Go
|
||
|
---
|
||
|
|
||
|
# If in Go
|
||
|
|
||
|
Go's `if` statements are like its `for` loops; the expression need not be surrounded by parentheses
|
||
|
`(` `)` but the braces `{` `}` are required.
|
||
|
|
||
|
```go
|
||
|
func sqrt(x float64) string {
|
||
|
if x < 0 {
|
||
|
return sqrt(-x) + "i"
|
||
|
}
|
||
|
return fmt.Sprint(math.Sqrt(x))
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Like `for`, the `if` statement can start with a short statement to execute before the condition.
|
||
|
|
||
|
Variables declared by the statement are only in scope until the end of the `if`.
|
||
|
|
||
|
```go
|
||
|
func pow(x, n, lim float64) float64 {
|
||
|
if v := math.Pow(x, n); v < lim {
|
||
|
return v
|
||
|
}
|
||
|
return lim
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## If and else
|
||
|
|
||
|
Variables declared inside an `if` short statement are also available inside any of the `else` blocks.
|
||
|
|
||
|
```go
|
||
|
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)
|
||
|
}
|
||
|
// can't use v here, though
|
||
|
return lim
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
fmt.Println(
|
||
|
pow(3, 2, 10),
|
||
|
pow(3, 3, 20),
|
||
|
)
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Running the above program produces an output similar to the following output -
|
||
|
```
|
||
|
$ go run if.go
|
||
|
27 >= 20
|
||
|
9 20
|
||
|
```
|