C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
This is a constant value, not something that will be altered at runtime. We use a const block for it.
Constant creation. With iota we gain a way to generate groups of constants based on expressions. With it, we can create an entire group of constants. This reduces bugs.
An example. Here we introduce the const keyword in a block of enumerated constants. We do not use all the features of const here. We declare three names and give them values.
Tip: The equals signs should lineup vertically in consts. This is achieved with the Gofmt program.
Tip 2: We can use these constants as values in a Go program by directly inserting the names.
Based on:
Golang 1.4
Golang program that uses const
package main
import "fmt"
const (
Cat = 10
Dog = 20
Bird = 30
)
func main() {
// Use our constants.
fmt.Println(Cat)
fmt.Println(Dog)
fmt.Println(Bird)
}
Output
10
20
30

Iota. This is an enumerator for const creation. The Go compiler starts iota at 0 and increments it by one for each following constant. We can use it in expressions.
Caution: We cannot use iota in an expression that must be evaluated at runtime—a const is determined at compile-time.
Tip: The term iota is like beta: it stands for the letter "I" in Greek, just as beta stands for B.
In some programming languages iota is used to represent an array of consecutive integers.
Golang program that uses iota in const
package main
import "fmt"
const (
Low = 5 * iota
Medium
High
)
func main() {
// Use our iota constants.
fmt.Println(Low)
fmt.Println(Medium)
fmt.Println(High)
}
Output
0
5
10

Var, variables. We can declare variables in a var block. Here variables are initialized at runtime, and they can be reassigned in methods. They can be used throughout the program.
Golang program that uses var
package main
import (
"fmt"
"time"
)
var (
Month = time.Now().Month()
Year = time.Now().Year()
)
func main() {
// Use variables declared in var.
fmt.Println(Month)
fmt.Println(Year)
}
Output
January
2015

Cannot assign const. A constant name cannot be assigned to another value. It is not a variable. The Go compiler will report an error here. With var, the program will compile.
Golang program that causes assignment error
package main
const (
Normal = 1
Medium = 2
)
func main() {
Medium = 3
}
Output
C:\programs\file.go:13: cannot assign to Medium

With const and iota, Go provides compile-time code generation features. We can specify many constants with just an expression. With var we separate variables into a block.