LoginSignup
1
2

More than 1 year has passed since last update.

GoでWebサーバーを作成する3

Posted at

はじめに

Golangをもちいてapiサーバーを作成するさいに調べたことをまとめます。

Golangの基礎

ポインタについて

ポインタは変数の値ではなく、変数が格納されてるアドレスをわたす。
引数やレシーバを関数内で書き換える必要がある場合や、大きな構造体や配列を扱う場合に使用するとよい。

&は、変数からそのポインタを抽出するのに使用する。
*はポインタが指し示す変数の実体を抽出する。
*はポインタ型の宣言をするときに使用する。

変数の初期値

golangでは、明示的な初期値なしで宣言された変数にはゼロ値が与えられます。

https://go.dev/tour/basics/12
https://qiita.com/tenntenn/items/c55095585af64ca28ab5

委譲 embedded

GOでは継承は使えない 

nilって何

Goでは、nilはポインター、インターフェイス、マップ、スライス、チャネル、および関数タイプのゼロ値を表す。
nilは何らかの「未定義」状態を意味するものではなく、それ自体が値。 Goのオブジェクトは、その値がnilである場合にのみ、nil。

golangでnilはどういう意味ですか?

fmt.Println()とlog.Println()の違い

logで出力されたメッセージには、実行時間が記載されるので、より詳しいlogを残せる。

メソッドのレシーバータイプ(値 or ポインタ)について

メソッドとは、レシーバーを持つ関数のことです。
そしてレシーバーは、メソッドの定義において、メソッド名の前にパラメーターとして定義されるものです。

ポイントレシーバーのほうが汎用性高そう。
レシーバー自体を変更するならポインタレシーバー。

Goでのjson構造体の扱い方

Ginとは

Ginは、Golangのフレームワーク

urlパラメータの取得方法、bodyの取得方法

GolangのMVCモデルアプリ

MVCモのデルのAPIを作成するときに参考にした記事。

GoAPIでDTOを実装する

DTOとは
ドメイン層をインフラ層(DB)から分離したいときに使います。
例えば、以下のようなモデルが定義されているとします。
このとき、DBでstatus = "0" or "1"が管理されているとしても、DTOを使用すれば、ドメイン側ではStatus = "active" or "inactive"などに変換して取り扱うことができます。

Golangのエラーハンドリング

エラーは上流に委譲、ログに出力することが主。

エラーを含めた簡単なレスポンスの返し方

golliraを用いたルーティング

golliraは、ルーティング用のライブラリ

ルーティングでのミドルウェアを実装

gormライブラリでDB操作

gormとは、golangのorマッパー

公式リファレンスをわかりやすくまとめている記事。

公式

gormを用いたDBとの接続方法

トランザクション

ページング処理のSQLについてlimitとoffset

Golang その他

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2