Last active
November 11, 2018 16:31
-
-
Save tokubass/a96f53fba66f724dde1ed2139f7ef1b7 to your computer and use it in GitHub Desktop.
golangのエラー型
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
) | |
type MyErr struct {} | |
func (e MyErr) Error() string { | |
return fmt.Sprint("error") | |
} | |
func main() { | |
{ | |
var err interface{} | |
if err == nil { | |
fmt.Println("interface\t is nil") | |
} | |
} | |
{ | |
var err error | |
if err == nil { | |
fmt.Println("error type\t is nil") | |
} | |
} | |
{ | |
var err *MyErr | |
if err == nil { | |
fmt.Println("MyErr pointer\t is nil") | |
} | |
} | |
{ | |
var err MyErr | |
_ = err | |
//cannot convert nil to type MyErr | |
//if err == nil { | |
// fmt.Println("MyErr is nil") | |
//} | |
} | |
{ | |
var my *MyErr | |
var err error | |
err = my | |
if err != nil { | |
fmt.Println("error\t is not nil") | |
switch err := err.(type) { | |
case *MyErr: | |
_ = err | |
fmt.Println(" *MyErr") | |
} | |
} | |
} | |
{ | |
var my MyErr | |
var err error | |
err = my | |
if err != nil { | |
fmt.Println("error\t is not nil") | |
switch err := err.(type) { | |
case MyErr: | |
_ = err | |
fmt.Println(" MyErr") | |
} | |
} | |
} | |
} | |
Author
tokubass
commented
Nov 11, 2018
error interfaceに何か代入した時点で nilではない。
var my *MyErr
fmt.Println(my == nil) //true
var err error
err = my
fmt.Println(err == nil) //false
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment