hakeの日記

Windows環境でプログラミングの勉強をしています。

Go言語 - エラー時の戻り値

Go言語にはerror型インターフェースが定義されているので、これに適合するエラー用構造体を作成して、エラー時にはこの構造体をerror型として返す。
正常終了時には、nil リテラルを返すようにする。

package main

import (
	"fmt"
)

/*
Goで定義されているerror型インターフェース
type error interface{
	Error() string
}
*/

type MyError struct{
	msg string
}
func (m *MyError) Error() string{
	return m.msg
}
func NewMyError(s string) error{
	return &MyError{msg: s}
}


// エラー時にerror型を返す関数
func myFunc(flag bool) error {
	if flag { return NewMyError("Error:エラー発生")}
	return nil
}

func main() {

	fmt.Println( myFunc(true ) )  //-> Error:エラー発生
	fmt.Println( myFunc(false) )  //-> <nil>

}

通常はこっちを使用した方が簡単

package main

import "fmt"

func main() {
	err := fmt.Errorf("error error error") // error型が作成される
	fmt.Println(err)
}