0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

型アサーション

Posted at

型アサーション

iが具体的な型Tを保持し、基になるTの値を変数tに代入する。

t := i.(T)

iTを保持していない場合、この文はpanicを引き起こす。

型アサーションは2つの値(基になる値とアサーションが成功したかどうかを報告するブール値)を返すことができる。

iTを保持していれば、tは基になる値になり、okは真(true)になる。
そうでなければ、okは偽(alse)になり、 tは型Tのゼロ値になり panic は起きない。

package main

import "fmt"

func main() {
	var i interface{} = "hello"

	s := i.(string)
	fmt.Println(s)

	s, ok := i.(string)
	fmt.Println(s, ok)

	f, ok := i.(float64)
	fmt.Println(f, ok)

	f = i.(float64) // panic
	fmt.Println(f)
}
// hello
// hello true
// 0 false
// panic: interface conversion: interface {} is string, not float64

// goroutine 1 [running]:
// main.main()
// 	/tmp/sandbox3611871940/prog.go:17 +0x14f
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?