Go言語の雑多なメモ
Posted:
Goのバージョンを上げたい
go mod edit -go=1.20 # 1.20に上げたい go get -u ./… # 依存パッケージを更新 go mod tidy # 不要なパッケージを削除 go list -m all # パッケージのバージョンを確認
まとめると
go mod edit -go=1.20 && go get -u ./... && go mod tidy && go list -m all
zipファイルを展開する
// zipファイルを展開する
// パスワードがかかっている場合もある
// 引数にはzipファイルのパスと展開先のディレクトリを指定
func dellArchive(path string, newDir string) {
// ファイル名からパスワードを推測
re := regexp.MustCompile(`対象ファイル_(\d*).zip`)
password := ""
if s := re.FindStringSubmatch(path) ; len(s) > 0{
password = "hogehoge"
}
// zipファイルを開く
r, err := zip.OpenReader(path)
if err != nil {
log.Fatal(err)
}
defer r.Close()
for _, f := range r.File {
if f.IsEncrypted() {
f.SetPassword(password)
}
r, err := f.Open()
if err != nil {
log.Fatal(err)
}
// ファイルの中身を読み込み
buf, err := ioutil.ReadAll(r)
if err != nil {
log.Fatal(err)
}
defer r.Close()
// fmt.Printf("Size of %v: %v byte(s)\n", f.Name, len(buf))
// ファイル書き出し
createDir(newDir)
fileName,_ := Sjis2Utf8(f.Name)
err = ioutil.WriteFile(filepath.Join(newDir, fileName), buf, 0644)
if err != nil {
log.Fatal(err)
}
break
}
}
OpenAiをgolangから使うライブラリ
- go-openai/chat_test.go at 0a421308993425afed7796da8f8e0e1abafd4582 · sashabaranov/go-openai
- テストコードが参考になる
- go-openai/chat_test.go at 0a421308993425afed7796da8f8e0e1abafd4582 · sashabaranov/go-openai
- 複数のコメントを扱う方法がある
参考
リリース時にチェックしたい
Golangのコマンドラインオプション
ioutilが古くなる件について
pdfcpu/pkg/api/extract.go at 12ffda120bb3d168e207a9d61f2afac0e3bfabf1 · pdfcpu/pdfcpu
- pdfファイルの操作のライブラリだが、まだうまく使えてない
Go 言語の os パッケージにある File 型を使ってみる (1) : os.File オブジェクトを取得する関数 - 倭マン’s BLOG
- ファイルの読み込み方法の参考になった
- os.Pipe関数の使い方もある
- ファイルの読み込み方法の参考になった
Go言語(golang) flagパッケージでコマンドライン引数をパース - golangの日記
- flagパッケージの使い方
パイプの処理で参考になった
モバイルアプリを作れるライブラリ
TrrelloのAPIを使う
YAML
- Go で map 型の YAML 出力を指定の順序へ変更したい | フューチャー技術ブログ
- GolangのMapは順序を持たない、YAMLの出力時にソートする
- goccy/go-yaml: YAML support for the Go language
- YAMLのライブラリ
- golangでYAMLファイルを読み込んで構造体に入れる - おおたの物置
- 構造体にYAMLを入れる方法
- Go で map 型の YAML 出力を指定の順序へ変更したい | フューチャー技術ブログ