teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

具体化

2017/08/19 07:17

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- golangで変数の型によって処理を変えたいです
1
+ golangの型(インターフェース?)によって処理を変え
body CHANGED
@@ -1,12 +1,21 @@
1
- # やりたいこと
1
+ GoでtwitterAPIを扱うことができるライブラリである[anaconda](https://github.com/ChimeraCoder/anaconda)の使い方を調べていたところ、[この記事](http://ykicisk.hatenablog.com/entry/2015/11/11/004757)を見つけました。
2
2
 
3
- `もしこ変数型がhogeなら`という処理をしたいです。
3
+
4
- 実際書いてエラーが出たコードが以下です。
5
-
6
4
  ```go
5
+ twitterStream := api.PublicStreamSample(nil)
6
+ for {
7
+ x := <-twitterStream.C
8
+ switch tweet := x.(type) {
9
+ case anaconda.Tweet:
10
+ fmt.Println(tweet.Text)
7
- import "reflect"
11
+ fmt.Println("-----------")
8
- a := "aiueo"
12
+ case anaconda.StatusDeletionNotice:
13
+ // pass
14
+ default:
9
- if reflect.TypeOf(a) == string{ //Type string is not an expression
15
+ fmt.Printf("unknown type(%T) : %v \n", x, x)
10
- 処理
11
- }
16
+ }
17
+ }
12
- ```
18
+ ```
19
+ ここのswitch構文。
20
+ これは型によって処理を変えるような部分かなと推測したのですが、tweet := x.(type)の部分で何をやっているのかわかりません。
21
+ それと、これをif文で書き換えるとするとどのようになるか教えてください。