const
(定数)がキーワードかどうか知りたい時、どうやって確かめますか?
package main
import (
"fmt"
)
const
func main() {
fmt.Println("Hello, playground")
}
The Go Programming Language SpecificationのKeywordsに答えが載っています。
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
Go playgroundでいくつか定数を作ってみましょう。コンパイラが自動的に型を決定してくれます。
package main
import (
"fmt"
)
const a = 42
const b = 42.78
const c = "James Bond"
func main() {
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Printf("%T\n", a)
fmt.Printf("%T\n", b)
fmt.Printf("%T\n", c)
}
import
文のように、定数を宣言して値を割り当てる方法もあります。
package main
import (
"fmt"
)
const (
a = 42
b = 42.78
c = "James Bond"
)
func main() {
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Printf("%T\n", a)
fmt.Printf("%T\n", b)
fmt.Printf("%T\n", c)
}
定数の型を自分で指定することもできます。型が指定されていない定数は_同種の定数_の用に扱われます。コンパイラがどのように型を与えるか決定するため、コンパイラに柔軟性を与えてくれます。型が決定されると、柔軟性はなくなります。
package main
import (
"fmt"
)
const (
a int = 42
b float32 = 42.78
c string = "James Bond"
)
func main() {
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Printf("%T\n", a)
fmt.Printf("%T\n", b)
fmt.Printf("%T\n", c)
}