回答編集履歴

4

注意点追記

2018/10/27 23:46

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -1,4 +1,4 @@
1
- メソッド名の先頭が小文字なのはパッケージを超えて参照できないので注意してください。
1
+ TypeScriptとは違いメソッド名の先頭が小文字なのはパッケージを超えて参照できないので注意してください。(一般にGoでインターフェース定義を書くときは先頭を大文字にする)
2
2
 
3
3
 
4
4
 

3

文言修正

2018/10/27 23:46

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- 下記のようにすれば特定のインターフェースにある構造体が実装済みかどうかをチェックすることができます。
17
+ 下記のようにすれば「ある構造体」が特定のインターフェース実装済みかどうかをチェックすることができます。
18
18
 
19
19
  ```go
20
20
 

2

補足

2018/10/27 23:42

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -7,6 +7,8 @@
7
7
 
8
8
 
9
9
  また、インターフェースは逆でメソッドしか記述できずプロパティを扱うことはできません。
10
+
11
+ (もしプロパティを扱いたい場合はGetterやSetterを書きます)
10
12
 
11
13
 
12
14
 

1

質問の文言に近づけた

2018/10/27 23:40

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```go
18
18
 
19
- type Observer interface {
19
+ type Notifier interface {
20
20
 
21
21
  Notify()
22
22
 
@@ -24,21 +24,21 @@
24
24
 
25
25
 
26
26
 
27
- type S struct{}
27
+ type Observer struct{}
28
28
 
29
29
 
30
30
 
31
- func (s *S) Notify() {
31
+ func (s *Observer) Notify() {
32
32
 
33
33
  }
34
34
 
35
35
 
36
36
 
37
- var _ Observer = (*S)(nil) // ここでチェック
37
+ var _ Notifier = (*Observer)(nil) // ここでチェック
38
38
 
39
39
  ```
40
40
 
41
- 上記では構造体SがNotifyというメソッドを持つことをチェックします。
41
+ 上記では構造体ObserverがNotifyというメソッドを持つことをチェックします。
42
42
 
43
43
 
44
44
 
@@ -48,6 +48,6 @@
48
48
 
49
49
 
50
50
 
51
- * Notifyメソッドをもつオブジェクトを期待する側がインターフェース宣言をする
51
+ * Notifyメソッドをもつオブジェクトを期待する側がNotifierインターフェース宣言をする
52
52
 
53
- * 期待する側ではObserverインターフェース型を引数に持つのでそれを利用する実装を書いた時点でインターフェースを満たしたかどうかがコンパイル時にチェックされるのでチェックのためだけの記述が不要
53
+ * 期待する側ではNotifierインターフェース型を引数に持つのでそれを利用する実装を書いた時点でインターフェースを満たしたかどうかがコンパイル時にチェックされるのでチェックのためだけの記述が不要