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

回答編集履歴

2

リンク修正

2018/03/09 08:15

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -15,5 +15,5 @@
15
15
  }
16
16
  ```
17
17
 
18
- 実際には https://github.com/golang/go/blob/master/src/fmt/print.go#L594-L598
18
+ 実際には [https://github.com/golang/go/blob/master/src/fmt/print.go#L594-L598](https://github.com/golang/go/blob/master/src/fmt/print.go#L594-L598)
19
19
  ここでタイプスイッチによりError()メソッドが呼ばれています。

1

コメントに対する追記

2018/03/09 08:15

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -1,4 +1,19 @@
1
1
  例えばlogやfmtのPrintにわたすと「Error()メソッドを持つもの」を区別してこのメソッドを呼んで文字列します。
2
2
  「Error()メソッドを持つもの」とはerror型の値です。
3
3
 
4
- つまりすべてのエラーオブジェクトはlogやfmtで文字列化されてコンソールやファイルに出力することができます。
4
+ つまりすべてのエラーオブジェクトはlogやfmtで文字列化されてコンソールやファイルに出力することができます。
5
+
6
+ 追記:
7
+
8
+ 「type assertion」や「type switch」について調べてみてください。
9
+
10
+ ```go
11
+ err := &ParseError{}
12
+ v, ok := err.(error)
13
+ if ok {
14
+ fmt.Print(v.Error())
15
+ }
16
+ ```
17
+
18
+ 実際には https://github.com/golang/go/blob/master/src/fmt/print.go#L594-L598
19
+ ここでタイプスイッチによりError()メソッドが呼ばれています。