Go関連のことを調べてみた2020年09月13日

Go関連のことを調べてみた2020年09月13日

deferの実行タイミング

# タイミング
– return
– panic

# 参考
– [kakakakakku blog](https://kakakakakku.hatenablog.com/entry/2015/12/15/222217)

元記事を表示

【Go】http.HandleFunc()とhttp.Handle()の使い分けは構造体のフィールドを使うかどうか

# はじめに
http.HandleFunc()とhttp.Handle()でServeHTTPを読んでいるのに
なにが違っているのか分からなかったので調べてみました。

# 結論
構造体のフィールドを使いたいかどうか

# http.HandleFunc()とhttp.Handle()
[GoのドキュメントのPackage http](https://golang.org/pkg/net/http/)のよると

>ListenAndServe starts an HTTP server with a given address and handler. The handler is usually nil, which means to use DefaultServeMux. Handle and HandleFunc add handlers to DefaultServeMux:

とどちらもDefaultServeMuxのパターンとしてハンドラを登録するもの。

DefaultServeMuxについてやハンドラとの関係性については以下の記事がわかりやすいです。
[【Go】ne

元記事を表示

GoでExcelを操作する

Goでエクセルファイルを操作する方法のメモです。
**tealeg/xlsx**ライブラリを使うと簡単でした。

## Gitのインポート
github上のライブラリを使用するため、[Git](https://git-scm.com/)のダウンロードが必要でした。
※設定はデフォルトのままで行いました。

## ライブラリのインポート

コマンドプロンプトで以下のコマンドを実行すると、エクセルの[ライブラリ](https://github.com/tealeg/xlsx)が使えるようになります。go get の後のURIは[GoDoc](https://godoc.org/github.com/tealeg/xlsx#pkg-index)で検索して取得しました。

“`
go get github.com/tealeg/xlsx
“`

コマンドで実行するだけなので楽でした。

## プログラム作成
テスト用として、エクセルにシートを追加するプログラムを作成しました。

<手順>
1. goファイルと同階層に新規ワークシートを作成
2. ファイル名を「テスト」とリネームして保存

元記事を表示

echoでより高速なJSONを返す

# はじめに
goのwebフレームワークである[Echo](https://github.com/labstack/echo)にてデフォルトのJSONよりも高速なJSONを返したいことがあると思います。その例として[easyjson](https://github.com/labstack/echo)で作ったJSONを返そうとしたときに少し詰まりどころがあったので書き留めておきたいと思います。

# まずはデフォルトから
“`golang:main.go
package main

import (
“github.com/masibw/echo_json/model”
“net/http”
“github.com/labstack/echo/v4”
“github.com/labstack/echo/v4/middleware”
)

func main() {
// Echo instance
e := echo.New()

// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())

元記事を表示

A Tour of Go メモ【2】1日目

[A Tour of Go](https://go-tour-jp.appspot.com/flowcontrol/1 #)
時折、コードを変更したり、関連記事を調べたりしながら、学習しました。

# for

“`
func main() {
sum := 0
for i :=0; i < 10; i++ { sum += i fmt.Println(i) fmt.Println(sum) } } #省略可能 for ; sum < 100; { sum += sum } #さらに省略可能 for sum < 100 { sum += 100 } # 無限ループ for { } ``` # if ``` func judge(x int) string { if x > 0 {
return “マイナス”
}
return fmt.Println(“プラス”)
}
func main() {
fmt.Println(judge(−100

元記事を表示

A Tour of Go メモ【1】1日目

# goのチュートリアル
[A Tour of GO](https://go-tour-jp.appspot.com/basics/1 #)
時折、コードをいじって、どんなエラーが出るかなどを試しながら、学習しました。

#出力
“`packages.go
package main

# パッケージをインポート
import (
# 出力のためのパッケージ
“fmt”
)

func main() {
# 出力
fmt.Println(“Hello World”))
}
“`

#パッケージのインポート

“`packages.go
package main

#複数行で書くこともできる
import “fmt”
import “math”

#こっちの方がスマート
import (
“fmt”
“math”
)
“`

#関数と引数

“`function.go
package main

import “fmt”

#変数の後ろに型名を指定する必要がある
func add(x int, y int) int {
return x + y
}

元記事を表示

レイヤードアーキテクチャ+DDDでAPI開発[入門]

## 前書き
– 著者の理解が甘く間違っている箇所もあるかもしれません。その際は優しく教えていただけると幸いですmm
– レイヤードアーキテクチャは具体的なディレクトリ構成等を示すものではなく、あくまで**概念的な指標**です。正解はありません。

なるべく初学者にもわかりやすい様に書きました。
始めは実装コード等理解しづらいと思いますが、概念的な理解の足掛かりにしていただけると嬉しいです☺️

## レイヤードアーキテクチャって何?
### 概要
**ソフトウェアの関心事をレイヤー毎に分離するための設計方法の一つ**です。
他にもクリーンアーキテクチャ・オニオンアーキテクチャなどが有名ですが、どれも**責務・依存関係を明確化する**というゴールは変わりません。

### メリット
アーキテクチャを導入する主なメリットは以下の二つです。

– DBやUI・ビジネスロジックなど、**仕様変更の際にコードの修正箇所が明確・軽微**
– 各レイヤーにおいてテストする目的が明確・処理をモックしやすいことから**テストしやすい**

仕様変更に強くテストもしやすいことから、**保守運用しやすい*

元記事を表示

sqlfile : GoでSQLファイルを簡単に実行する

GoでSQLファイルを簡単に実行するためのライブラリを作ったので,その紹介をします.

https://github.com/tanimutomo/sqlfile

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224401/71f574df-6389-83ce-4762-a47c06a653c7.png)

## はじめに
Goで複数のクエリが書かれたSQLファイルを実行できるライブラリがなかったので,作りました. [sqlfile](https://github.com/tanimutomo/sqlfile)

**作成の背景**
Goで,DAO (data access object) パッケージのユニットテストの際にseed data挿入が必要になりました.
RailsのFixtureのような,seed dataを作成するためのパッケージとして,[testfixtures](https://github.com/go-testfixtures/testfixtures) という

元記事を表示

production-ready なGo製2Dゲームライブラリ Ebiten の紹介 & リンク集

## はじめに
[Ebiten](https://ebiten.org/) は、Goで書かれた非常にシンプルな2Dゲームライブラリです。(公式サイト: https://ebiten.org)

圧倒的な安定性を誇り、今2Dゲームを作るなら非常にオススメ! というわけで、改めて紹介記事を書いてみます。