Skip to content

Latest commit

 

History

History
104 lines (80 loc) · 2.04 KB

4.06.md

File metadata and controls

104 lines (80 loc) · 2.04 KB

セクション 4.6 定数

const(定数)がキーワードかどうか知りたい時、どうやって確かめますか?

package main

import (
	"fmt"
)

const

func main() {
	fmt.Println("Hello, playground")
}

The Go Programming Language SpecificationKeywordsに答えが載っています。

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)
}

playground

定数の型を自分で指定することもできます。型が指定されていない定数は_同種の定数_の用に扱われます。コンパイラがどのように型を与えるか決定するため、コンパイラに柔軟性を与えてくれます。型が決定されると、柔軟性はなくなります。

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)
}

playground