tocsatoの備忘録

ほぼほぼ 50 代のプログラマの備忘録。swift golang javascript css html5 nginx mysql などを最近使ってます。

golang

[]byte と string のキャスト

[]byte と string の相互キャストは比較的頻繁に行う作業です。 しかし google:golang cast string to byte slice で分かるように、これらの操作はメモリコピーが走ります。この記事は、unsafe パッケージを使用して 一時的にキャストしたデータを扱う キャ…

スライス操作のおさらい - 2

スライス操作のおさらい - 1の続きで、様々なスライス操作のサンプルコードを挙げます。 スライスの引数に配列は渡せない package main import ( "fmt" ) func foo(b []byte) { fmt.Printf("[% 02x]\n", b) } func main() { x := [4]byte{100, 101, 102, 103…

スライス操作のおさらい - 1

スライスとは golang は配列とは別にスライスという型があります。 配列は物理的にメモリに配置される実体ですが、スライスは配列の参照に近いものです。 スライスは、長さとは別に容量を持っていることで、柔軟にかつ、効率よくメモリ操作ができます。 スラ…

golang 暗号化モード

crypto/cipher パッケージには複数の暗号利用モードが実装されている crypto/cipher パッケージにはいくつかの NewXXX() が定義されています。 これら NewXXX() は使用する暗号利用モードを指しています。 なんとなく暗号化したいだけなら、暗号利用モード?…

go vet で panic

Panic これまで普通に使えてた go vet コマンドが突然 panic を起こしてしまいました。 panic: inconsistent import: var database/sql.ErrTxDone error golangのバージョンアップが原因 最近 Go1.7 にバージョンアップをしたことが原因だった模様です。 試…