20211009のGoに関する記事は3件です。

Go言語で別ディレクトリにある別モジュールを呼び出す方法

参考記事 公式のドキュメント
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

golangでpostgresを操作する。

golangでormなしにpostgresを操作する機会があり、色々学びがあったのでまとめ見たいと思います。 使用ライブラリ github.com/lib/pq database/sql 配列 postgresには配列型があり、柔軟に複数の値を操作できます。 集約関数から、マッチした値を配列に変換してDISTINCTを掛ければ一意な値の配列が得られたりします(速さは保証しません)。 golangで書く場合は以下の通りです。 targetIds = []int{400,500} // queryに配列を埋め込む db.Query(`SELECT * FROM t WHERE id = ANY($1)`, pq.Array(targetIds)) // query結果を配列に変換する var x []sql.NullInt64 db.QueryRow(`SELECT ARRAY[235, 401]`).Scan(pq.Array(&x)) pg.Array関数でgolangの配列 <-> query を簡単に行えます。 json postgresにはjson型があり、mysqlと比べると簡単にデータを整形できます。jsonをカラムとして変換したりなど扱いやすい形に変換できます。 今回は単純にjson型からデータを引っ張る場合です。 // 書き込み insertQuery := "INSERT into t jsonColumn (jsonData) values($1)" d, _ := json.Marshal(newData) db.Exec(insertQuery, d) // 読み込み selectQuery := "SELECT jsonColumn FROM t" row, _ := db.QueryRow(selectQuery) var jsonRaw null.String row.scan(row, &jsonRaw) var resultStruct <適当な構造体> json.Unmarshal([]byte(jsonRaw), &resultStruct) 単純に jsonに変換して埋め込むだけでOKです。 jsonパッケージを利用しましょう。 pkを返す postgresはinsertした瞬間にpkがあればそれを返してくれます。 golangだと以下の通り var targetId int insertMasterQuery := "INSERT INTO t (id) VALUES (DEFAULT) RETURNING id;" err := database.QueryRow(insertMasterQuery, newsId).Scan(&targetId) 最後に おそらく、本番で使う場合はormなどと組み合わせることとなります。postgresは多機能で柔軟な処理が行える反面、覚えることも多いです。 ただ、基本さえ押さえておけば、混乱することは少ないと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GolangでWebアプリケーションを作成する

新しい言語の勉強をするにはハンズオンが一番ということで、Golangを使ってCRUDから始めてタスク管理のWebアプリケーションを作成する。 随時新しいキーワードを見つけた際には、調べた情報をまとめていきたい。 目的 Golangの使い方とWebアプリケーションの実装に関する技術習得 設計 概要 個人やチームで使用するタスク管理Webアプリ Github データ Struct Field task IdNameContentCompletedDeadlineArchived user IdPasswordMail team IdUsers 実装したい項目 各StructのCRUD taskのCRUDに関するAPI Googleカレンダーとの連携 taskのCRUDを自動化するインターフェース 毎日定時にDailyタスクを再作成する 毎週WeeklyタスクでCompletedのものをアーカイブするなど など 複数ユーザーでの同時編集 リンク集 今後の実装の記事を記載予定
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む