簡略化のためにmain()の中にmain()にありますが・・・
上のコードの場合sql.Openの返り値がerrであればreturnでhoge()を抜けmain()関数の中に戻れるのですが、下のコードのように接続を別関数にまとめて同じ事をする場合はどのように記載すれば良いのでしょうか?
下のコードの場合errとそうでない場合とで返り値の型が違うのでそもそもコード自体がエラーになってしまうのですが仮にerrのreturnが発動できてもhoge2()を抜けるだけでhoge()までは抜けてはくれないのでmain()には戻れないのですよね?
どのように書けば良いのでしょうか?
func main (){ hoge() main() } func hoge() { db, err := sql.Open("mysql", "root:@/my_database") if err != nil { fmt.Println(err) return } defer db.Close() db.Query・・・(略)//dbに接続できたら以下処理 }
func main (){ hoge() main() } func hoge() { db := hoge2() defer db.Close() db.Query・・・(略)//dbに接続できたら以下処理 } func hoge2(){ db, err := sql.Open("mysql", "root:@/my_database") if err != nil { fmt.Println(err) return } return db }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/23 12:57