質問編集履歴
1
具体化
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
|
-
|
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
|
-
|
11
|
+
fmt.Println("-----------")
|
8
|
-
|
12
|
+
case anaconda.StatusDeletionNotice:
|
13
|
+
// pass
|
14
|
+
default:
|
9
|
-
|
15
|
+
fmt.Printf("unknown type(%T) : %v \n", x, x)
|
10
|
-
処理
|
11
|
-
}
|
16
|
+
}
|
17
|
+
}
|
12
|
-
```
|
18
|
+
```
|
19
|
+
ここのswitch構文。
|
20
|
+
これは型によって処理を変えるような部分かなと推測したのですが、tweet := x.(type)の部分で何をやっているのかわかりません。
|
21
|
+
それと、これをif文で書き換えるとするとどのようになるか教えてください。
|