他の言語同様、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: