PUROGU LADESU

ポエムがメインのブログです。

Golang

【Golang】 9 HTTP、JSON

http endpointの作成 base, _ := url.Parse("http://example.com/ssss") reference, _ := url.Parse("/home?a=1&b=2") endpoint := base.ResolveReference(reference).String() fmt.Println(endpoint) リクエストの作成 req, _ := http.NewRequest("GET", en…

【Golang】 8 パッケージ

package トップレベルにはmain.goとフォルダを配置 そのフォルダをパッケージとして、なかにgoファイルを置く 別のパッケージのコードを使うときは、importにプロジェクトフォルダからのパスでパッケージ名を指定する さらに階層を作っても良い アクセス制限…

【Golang】 7 Goroutine

gorutine goルーチン 前に go をつけると並列処理できる gorutineが終了しなくても、メインが終わればプログラムは終了してしまう。 それを避けるために sync.WaitGroupを使う。並列処理の数だけAdd()を行う。(Doneが呼ばれる回数) wg.Wait()でwg.Done()が…

【Golang】 6 構造体

メソッド 定義済みstructに関連付けてドットで呼び出せる関数(値レシーバ) //v.Area() func (v Ver) Area() int { structを参照渡しして、メソッド内で中身を書き換えるもの(ポインタレシーバ) //v.Scale(5) func (v *Ver) Scale(i int) { コンストラク…

【Golang】5 ポインタ

ポインタ var p *int = &n //intのポインタ型、アドレスを格納 p //アドレス *p //ポインタが指す値 new make 指定の型のメモリ確保する var p *int = new(int) //*p は0になる スライスやマップはmakeでメモリ確保(ポインタを返さない) struct 構造体 先頭…

【Golang】 4 制御構文、エラー処理

if if / else if / else ()はなくて良い if result == "ok" { } ;で一文でかける if result := by2(4); result == "ok" { for continue break for sum for {} だけだと無限ループできる for i := 0; i < 10; i++ { for sum < 10 { range リストやマップをか…

【Golang】 3 関数

関数 引数の型が同じ場合はまとめられる 返り値が複数の場合は()でくくる func add2(x, y int) (int, int) { return x + y, x - y } 名前付きの戻り値 Named Return Values func calc(price, item int) (result int) { result = price * item } 返り値として…

【Golang】2 基本とデータ型

Go言語仕様 The Go Programming Language Specification - The Go Programming Language 基本 main.goから始まる fmt.Println()で出力 init() 関数は強制的に最初に実行される。 packageとはコードの集まり。ライブラリもほぼ同じ意味。クラスはない。 ディ…

【Golang】 1 インストール

goのインストール golang.org goの最小コード // try.go package main import "fmt" func main() { fmt.Println("Hello, 世界") } go run try.go で実行 go build でバイナリファイルが残る IDE Goland 有料 VSCode パッケージGoをインストール delveデバッ…