Go

A Tour of Go vol.5

Go

Range スライスやマップの要素についてindexとあわせて1つずつ返す。 var pow = []int{1, 2, 4, 8, 16, 32, 64, 128} for i, v := range pow { fmt.Printf("index:%d value:%d\n", i, v) }第一引数のindexについては"_"を使うことで破棄することもできる。 …

A Tour of Go vol.4

Go

ここから本格的な学び Pointer 値のメモリのアドレスのこと。 ポインターの型 変数variableのポインタは *variable型 ゼロ値はnil &オペレータ オペレータ(=演算子) オペランド(=被演算子) Goでは&オペレーターがあり、オペランドへのポインタを引き出す。 i…

A Tour of Go vol.3

Go

For Continued 初期化と後処理ステートメントは省略可能。 for ; sum < 1000; { sum += sum } whileはないので繰り返し処理は全てforで記述が統一される。 if func pow(x, n, lim float64) float64 { if v := math.Pow(x, n); v < lim { return v } return l…

martiniからnegroniが生まれた背景とリフレクション

Go

弊社ではGoのWebフレームワークの中でnegroniを採用している。 negroni net/httpと直接結びついて動作する、ミドルウェアにフォーカスされたライブラリ。 セッション管理したりユーザ認証の際に利用されることが多い。negorniでは `gin`というコマンドを使う…

A Tour of Go vol.2

Go

variable goの変数宣言のステートメントは "var"またはvarを省略して下記のような書き方もできる k := 3 types 論理値型(ゼロ値:false) ・bool文字列型(ゼロ値:"") ・string数値型(ゼロ値:0) ・unit ・uint8 符号なし 8-ビット 整数 (0 to 255) ・uint16 符…

SQLインジェクションとplaceholder機能を使った対応処理

Go

SQLインジェクション r.GET("/1/users/:Id"上記のAPIをWebで叩くとき、WebではURLがブラウザの上部に表示され、下記のようにURLが表示される。 "https://domain.jp/users/id"パラメーター部分(id)はURLを直接書き換えることで別の値に置き換えることができる…

A Tour of Go vol.1

Go

Packages goのプログラムはパッケージで構成され、mainパッケージから開始される。 ソースコードの冒頭で自身を表すパッケージを記載し、 続いてインポートするパッケージを記述する。 package main import { "fmt" "net/http" "tmhub/helpers" } 自社のソー…

GoのMVC

Go

最近業務でGoの修正を行う機会があり、クライアント側しか触ってこなかった自分には未知のことがたくさんあった。 まずは大枠としてMVCから学ぶ。 MVCはレイヤーアーキテクチャという設計手法に基づいている。 レイヤーアーキテクチャ アプリケーションを責…