package is not in GOROOT
2021-03-02
一時的にGOPATHを変更してから、パッケージを2個作ったうえで簡単なコードを実行した時、次のようなエラーが出ました。 % package other/pkg1 is not in GOROOT (/usr/local/go/src/other/pkg1) パッケージの構造が原因です ...
一時的にGOPATHを変更してから、パッケージを2個作ったうえで簡単なコードを実行した時、次のようなエラーが出ました。 % package other/pkg1 is not in GOROOT (/usr/local/go/src/other/pkg1) パッケージの構造が原因です ...
Google Translation APIのガイドでは、Advanced Editionを使用する場合、サービスアカウントのキーファイルを使用するように案内されております。しかし、認証情報をスト ...
AWS SDK for Goの各AWSサービスのユニットテストのコードです。 単純にラップするするstructを作ってテストしています。 例えば、DynamoDBの場合は次の通り。 実 ...
エラーレスポンスを返す時でもリトライさせたくない場合は、ヘッダにX-Slack-No-Retryを指定する。 func handler(w http.ResponseWriter, r *http.Request) { // Process something... // Set "X-Slack-No-Retry: 1" if prevent retry. w.Header().Set("X-Slack-No-Retry", "1") w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusBadRequest) w.Write([]byte("")) } Reference https://api.slack.com/events-api#the-events-api__field-guide__error-handling__graceful-retries__turning-retries-off
gomockでエラー。とりあえず古いファイルを消して再実行すると解消できた。 % mockgen -source ./internal/app/usecase/xxx/repository.go -destination ./internal/app/usecase/xxx/repository_mock.go -package xxx -: found packages xxx (repository.go) and mock_updateproteinevent (repository_mock.go) in /Users/xxx/go/src/proteinreminder/internal/app/usecase/xxx 2020/10/21 04:21:56 Loading input failed: loading package failed # Delete % rm -rf ./internal/app/usecase/xxx/repository_mock.go # Run again and completed. % mockgen -source ./internal/app/usecase/xxx/repository.go -destination ...
.sql向け golang-migrateのヘルパスクリプトです。 機能 .envからデータソースを読み込み ディレクトリ内のSQLファイルでマイグレート SQLのみ対応 ...
APIGateway + GoでLambdaのサンプルです。 仕様 エンドポイント: https://<API ID>.execute-api.ap-northeast-1.amazonaws.com/<stage>/<Resource> HTTPメソッド: GET パラメータ: { "text": "string" } Lambdaハンドラ 引数をstructで定義。 package main import ( "context" "github.com/aws/aws-lambda-go/lambda" ...
package main import ( "fmt" ) // Truncate string. func TruncateString(str string, length int) string { if length <= 0 { return "" } // This code cannot support Japanese // orgLen := len(str) // if orgLen <= length { // return str // } // return str[:length] // Support Japanese // Ref: Range loops https://blog.golang.org/strings truncated := "" count := 0 for _, char := range str { truncated += string(char) count++ if count >= length { break } ...
json.Marshal はomitemptyが値型stringに設定されていれば空文字を出力する。 フィールド自体不要な場合は、ポインタ型stringにするといい。 package main import ( "encoding/json" "fmt" ) type ValueSlice struct ...
// Set FormValues to struct func SetFormValueToStruct(values url.Values, structPtr interface{}) error { // Get the pointer of struct ptr := reflect.ValueOf(structPtr) // Get the value of struct value := ptr.Elem() // Set value to struct field valueType := value.Type() for i := 0; i < value.NumField(); i++ { jsonTag := valueType.Field(i).Tag.Get("json") if value.Field(i).CanSet() == false { return errors.New("cannot set value to field") } value.Field(i).Set(reflect.ValueOf(values.Get(jsonTag))) } return nil } // Example func ExampleSetFormValueToStruct() { // Form values formValues := url.Values{} formValues.Set("test1", ...
params := url.Values{ "keyword": {"some"}, } reqUrl := "https://yourendpoint.example.com?" + params.Encode() Reference https://golang.org/pkg/net/url/#URL.Query
json.Unmarshalしたデータに含まれる文字列のユニコードキャラクタをエスケープシーケンスに変換します。 // func convertJsonElement(data interface{}) interface{} { switch v := data.(type) { case map[string]interface{}: for ik, iv := range v { v[ik] = convertJsonElement(iv) } ...
プロジェクト内で、HTTPのユーティリティ関数をまとめるモジュールの命名に悩んでいました。 結果は project-layoutの構成で、internalの下にht ...
Goでパニックが発生するかどうかのテストです。 // Testing if testFunc calls panic. // e.g. // IsTestCallPanic(func(){ // <place test target here.> // }) func IsTestCallPanic(testFunc func()) (ok bool) { defer func() { if err := recover(); err == nil { ok = false } }() ok = true testFunc() return } // Test for test. func TestIsTestCallPanic(t *testing.T) { isCalled := IsTestCallPanic(func() { ...
Iocコンテナを作ろうとして次のようなコードを書くとエラーが出ました。 原因はinterfaceのポインタの型エラー。 // interface type IFace interface { hello() string } // concrete type type Concrete struct { } func NewConcrete() *Concrete { return ...
GoでsqliteにデータをInsertしようとしてエラー。 $ error table Balance has no column named price Insertしているコードを見ても問題はない。 カラムを確認すると…… 2個目のカラム ...