電波ビーチ

☆(ゝω・)v

go

chromedp+goqueryを使ったスクレイピングのスニペット

go

タイトルですべてを語っているだけの自分用メモ 背景 そういう機会に直面してしまった。pythonなら余裕だがpython/Node以外だとそういえばやったことがない。せっかくなのでGoでやる。以上 chromedpは初めて使った chromedp/chromedp - github 四方山 また、…

Goで設定ファイル(.ini)を雑にさわる

go

南蛮千治の再発明じゃがすくなくともわたしは毎回ググるのでメモ

WSL2で雑にgoのweb開発環境

ゴール wsl側で起動したgoのwebサーバーにwindows側のlocalhostでアクセスするまでやるよ ゴール WSL2 update, upgrade 今回目指すディレクトリ構造 goのインストール PATHを通す プロジェクト作成 wslで起動したサーバーにwindows側でlocalhostでアクセスす…

Goでjsonファイルを読もうとしたらエラー出た->BOM付きファイルでした

かなしい事件。 . . . p := filepath.FromSlash(cur + "/peropero.json") f, err := os.Open(p) if err != nil { log.Fatalln(err) } defer f.Close() . . . 以下のようなエラーが出た 2022/05/07 22:56:16 invalid character 'ï' looking for beginning of …

cobraで引数不要なフラグを受け取る

go

あらすじ及び結論 -hとか--listとか、そういうやつが欲しかった。ふつのコマンドでよく使うし標準で専用のメソッドなりがあるのかと思ったがそんなことはない?見つけたのは以下のやつ。ちょっと古い||もっといい方法があるのかもしれませんが github.com ro…

golangで巨大なファイルを読み込むときはバッファサイズ指定してあげようね

go

デフォルトではバッファサイズが64k(216)byteになってて辛くなってしまう場面があった。

golangでジェネレータ

go

雰囲気で書いたのであってるか(正しいか)どうかは知らん。呼び出すたびにリバースするだけのやつ。適当にやったのにちゃんと動くからgoはえらい(そういう話ではない)

golangでゼロ埋め

go

fmt.Sprintfを使います。 s := fmt.Sprintf("%04d\n", 12) fmt.Println(s) // 0012

golangでsliceの要素をひとつ消したsliceが欲しい

go

まあこれですよね http://or3.hatenablog.com/entry/2020/01/13/111700or3.hatenablog.com package main import ( "fmt" ) func main() { arr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} fmt.Println(arr, len(arr), cap(arr)) // [1 2 3 4 5 6 7 8 9 10] 10 …

brewのgoenvが古いのでgithubリポジトリからインストールし直した

go

年単位で放置してたgoenvによるgo環境、ひさしぶりにさわろうとしたら $ goenv install -l . . . 1.12.0 1.12beta1 だいぶ前に1.13がでたと思うんだけど... どうやらbrewでインストールしたgoenvはバージョンが1.23.3で止まっているらしく、なのでbrew upgra…

俺はtask buildでGo modulesのgoコードを走らせたいだけなんだ

すげぇ久しぶりにGo書こうとしたら 前書いたのはたしか1.7系で、そのときのノリで再々々入門をしようとしてモダンな書き方を調べると、modules ?なんですかこれは? 知らない子ですね...? GOPATH モードからモジュール対応モードへ移行せよ - Qiita Go Modu…

Goでスライスの任意のインデックスに挿入

go

ちなみに「任意のインデックスを削除」はこれでやってます。 or3.hatenablog.com 実装 package main import "fmt" func main(){ n := []int{1, 2, 3,} incert_target := 9999 intint := make([][]int, 0) for i:=0; i

Goで順列を辞書順で

スライスのポインタで渡すところとスライスのコピーとスライスの任意のインデックスの要素を消すっていう実装が頭まわりませんでした… 実装 package main import "fmt" func main(){ test := []int{1, 2, 3, 4} perms := permuration(test, 3) fmt.Println("…

Goで「文字列のa番目からb番目までを反転」をやる

そういう問題があったので。 Transformation | Aizu Online Judge func Reverse(s string, a int, b int) string { r := []rune(s) for i, j := a, b; i < (a+b)/2+1; i, j = i+1, j-1 { r[i], r[j] = r[j], r[i] } return string(r) } (a+b)/2+1でちゃんと+…

Goで二次元スライスの宣言をグローバルでやってローカルで初期化

go

日本語あってるかわかりませんが。 mainの外で二次元スライスを作っておき、中でmakeでcap/lenを設定して初期化するといいです。 package main import "fmt" var multislice [][]string func main(){ multislice = make([][]string, 4) s := []string{"ドバ…

Goでアルファベットの文字列

runeを利用します さっき作ったgenerate_alphabet.go を利用してa-zのstring出すやつ

Atcoder Beginner SelectionをGoで解いた

qiita.com これですね。Qiitaのほうでは各言語で解いてみた記事がどんどん上がっています(さすがにもう勢いは終息した) 当然Goで解いた記事なんてとっくの昔に出ているのでn番煎じなんですがたまにはコードかかんと、ということで。n番煎じなのでとくにこ…

Goのsortパッケージを少し調べた

go

組込みじゃないんかい Goは素晴らしい言語なのでソートのためにsortパッケージを呼ぶことができるのです。手間かけてimportしたソートにはぬくもりがありますね。 sortパッケージはこちら。 src/sort/sort.go - The Go Programming Language 基本的な使い方 …

Goで二次元配列、配列っていうかスライス

go

そういえばやったことなかったので。n*mだとこういう感じです graph := make([][]string, n) for i:=0; i

Sliceをコピーするときcopyじゃなくてappendを使うとなにも考えずに済む

go

Goでスライスをコピーする関数があります。 func copy(dst, src []Type) int 戻り値は「コピーが成功した要素の数」です。 注意点として、dstとsrcの長さが短いほうのぶんだけしかコピーされません。なので、 arr := []int{1, 2, 3} tmp := []int{} copy(tmp…

Goでfloat値を小数点以下n位まで出力する

go

調べても見つからなかったんだけど、書式指定子なんてみんな同じノリだろという感じで適当にC言語の書き方をしたらいけた。 a := 156.0/46.0 fmt.Println(a) fmt.Printf("%f\n", a) fmt.Printf("%.4f\n", a) //小数点以下4桁まで fmt.Printf("%10.3f\n", a) …

GoでCompetitive Programming用途のUtilityみたいなやつ

とりあえず空白区切りでの入力と一行をスライスとして得るのとそのうちでmin/maxをとるやつ。 どんどん更新してるので履歴はgistからどうぞ メソッドチェーン的なのができないのはGenericsが無いかららしいんですが、pythonやC#のLINQにお世話になってきてい…

Goでマルチバイト文字列をインデックス付きでほしい

go

Goでは文字列型は[]byteとして解釈されるらしいです。 mojiretsu := "💀test♡" for i:=0; i<len(mojiretsu); i++{ fmt.Printf("%v ", mojiretsu[i]) } >>> 240 159 146 128 116 101 115 116 226 153 161 そこで、rune型とかいうのが使われます。forでstring型に対してrangeを使うと、全体に対する1文字ごとのバイト列のイ</len(mojiretsu);>…