バックエンド開発未経験者がGo言語で開発をした件について
はじめに
はじめまして!「PlayGround Advent Calender 2024」21日担当のHiroです。
Playgroundではデータサイエンスコースを修了し、現在は案件に参加したりレビューを担当しています。
たまたまインターン先でwebサービスを作ることになり、Go言語を選択してバックエンド開発へ挑みました🔥
なぜGo言語を選択したのか?
- シンプルな記法で可読性が高い
- コンパイラ言語であるため処理速度が速い
- Gopherくんがかわいい
などの理由がありますが、一番は自分と開発メンバーが触れてみたかったという思いが理由です。
Go言語のお作法
今までデータコースではPythonしか触れたことのなかった私にとって初めての経験がいくつかありましたので共有します。
型について
Go言語はPythonと違って明確な型付けが必須です。
Pythonだと以下のように書けますが
age = 21
Goだと型を定義する必要があったりします。
var age int = 21
つまりコード内で変数を使う前に事前に宣言をしなければならないということです。
関数について
これが1番の違いかもしれません。
Pythonの場合
def num(a, b): #関数名(引数, 引数)
return a + b
result = num(3, 4)
print(result) #7
Goの場合
func num(a, b int) int { //func 関数(引数の名称 型) 戻り値の型
return a + b
}
func main(){
result := num()
fmt.Println(result) //7
}
このように関数だけでもかなり違いがあります。
エラー処理について
Go言語には例外処理がありません。
これはGo言語の思想的に「意図しないエラーは少ない方が良い」という思想があるためであり、人によってはGoを嫌う理由になる箇所でもあります。
つまりGo言語にはtry-except構文が存在しないということ。
Pythonの場合
def divide(a, b):
return a / b # b が 0 の場合 ZeroDivisionError
try:
result = divide(10, 0)
except ZeroDivisionError as e:
print("Error occurred:", e)
Goの場合
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("division by zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Result:", result)
}
Goでは成功の場合nilを、エラーの場合errorを返す慣習があります。
しかし例外的にpanicとrecoverが存在します。通常のフローでは対処しきれない場合にpanicで処理する場合もあります。
初めてPython以外の言語を選択する人に向けて
- Pythonしか使ったことないし、他の言語を勉強してみたいなあ
- バックエンドを作ってみたい!
このような理由をお持ちの方は思い切ってGo言語を使ってみて欲しいです。Go言語じゃなかったとしても意外と読めますし、頑張れば書けます👍
本当は開発を12月末で終わる予定だったのですが諸事情もあり、現在も開発中です。その話も別の記事で書きたいと考えています🔥
この記事ではほんの一部しか紹介できませんでしたが、Go言語は現在もアップデートされ続けています!
おまけ Gopherくんについて
Go言語にはGopherくんというマスコットキャラクターがいます、これがめっちゃかわいい。
お気に入りはなぜか焚書をしようとするGopherくんです。
今回は初心者ながらGo言語の特徴について紹介してみました。
Go言語に限らず、新しい言語へ飛び込むきっかけとなれば幸いです🙌
最後まで読んでいただきありがとうございました!
明日はkochaさんの記事です!お楽しみに👀