質問編集履歴

1

具体化

2017/08/19 07:17

投稿

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