質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

792閲覧

Golangのエラー処理について

akamakku

総合スコア191

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2020/04/07 15:49

編集2020/04/07 15:57

質問

例えば

go

1func Hoge() error { 2 // なにか 3}

のようなerrorのみを返す関数があるとして,

これが他の関数内の最後で呼び出されるとして,
Hogeから返されたerrorをHugeのerrorとして返せば良いだけの場合以下の書き方で問題ないでしょうか?

go

1func Huge() error { 2 //なにか 3 return Hoge()

それともこっちでしょうか?(このほうが読みやすい気はする)

go

1func Huge() error { 2 //なにか 3 if err := Hoge(); err != nil { 4 return err 5 } 6 return nil

(追記)
もちろんHogeの返り値によってなにか追加で処理を行ったり,
Hugeが複数の返り値を持っていたりしたら2つめだとは思うんですが,
あくまで上記のようにerrorを伝搬?すれば良いだけの場合は
2つめだと冗長と言われればそんな気もするし...って感じです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

書き方として問題があるかというと、無いと思います。下記のように error を返す関数で、return に関数があり、その呼び出し結果を return する書き方はあります。

go

1func Huge() error { 2 //なにか 3 return Hoge() 4}

例えば net.http の http.Get 関数は以下のようになっています。

https://github.com/golang/go/blob/master/src/net/http/client.go#L446-L448

go

1func Get(url string) (resp *Response, err error) { 2 return DefaultClient.Get(url) 3}

投稿2020/04/07 22:22

d_tutuz

総合スコア730

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問