他の言語同様、Go言語にも、実装パターン・デザインパターンの様なものがあります。 それは他の言語でも使われるようなものであったり、Go言語独自のものであったりします。 本稿では、Go言語の実装パターンをいくつか紹介します。
Go言語では、関数の引数に規定値を持たせたり、一部の引数のみを選んで値を与えたり、ということができません。 そのため、指定しても指定しなくてもいいような、オプションの引数を作りたいと思うと、あまり単純には書くことができません。
| #!/bin/bash | |
| readonly version="0.0.1" | |
| for opt in ${@} | |
| do | |
| case "${opt}" in | |
| "-h") | |
| echo A jq/jnv transparent wrapper | |
| exit 0 |
| package main | |
| import ( | |
| "context" | |
| "io" | |
| "log" | |
| "os" | |
| "strings" | |
| "github.com/docker/docker/api/types" |
| package main | |
| import ( | |
| "encoding/json" | |
| "fmt" | |
| "log" | |
| "net/http" | |
| "os" | |
| "os/exec" | |
| ) |
Go言語での開発をするために、まずは環境整備をしましょう。
公式サイトより、ご自身の環境に合わせてインストーラをダウンロードし、Go言語の実行環境をインストールしてください。 バージョンは最新(本ガイドを書いた時点では1.12.6)をインストールしてください。
イベント当日、手元で実際にプログラミングを行うにあたり、ある程度環境を整える必要があります。 参加当日までに、次の手順で準備をお願いします。
公式サイトより、ご自身の環境に合わせてインストーラをダウンロードし、Go言語の実行環境をインストールしてください。 バージョンは最新(本ガイドを書いた時点では1.12.6)をインストールしてください。
| package benchmark_test | |
| import ( | |
| "fmt" | |
| "strconv" | |
| "testing" | |
| ) | |
| var label = "FOOBARBAZ" |
| func TestFoo(t *testing.T) { | |
| tests := []struct { | |
| // test case structure | |
| }{ | |
| // test cases | |
| } | |
| for i, tt := range tests { | |
| t.Run(strconv.Itoa(i) + "/" /* if you have any labels, append to test title */, func(t *testing.T) { | |
| // test | |
| }) |
| func promptFn(passphrase []byte) func([]openpgp.Key, bool) ([]byte, error) { | |
| var alreadyCalled bool | |
| return func([]openpgp.Key, bool) ([]byte, error) { | |
| if alreadyCalled { | |
| return nil, errors.New("the passphrase is incorrect") | |
| } | |
| alreadyCalled = true | |
| return passphrase, nil | |
| } | |
| } |
---
apiVersion: v1
kind: Pod
metadata:
name: migrate
spec:
containers: