Skip to main content

常にいまいち

Go関連のTips

全部go1.14.3で検証したもの。

部分文字列の切り出し

stringsパッケージにも部分文字列の切り出しを行うメソッドはないので、slice操作と同じようにして行う。

このとき注意がいるのが、マルチバイト文字の取り扱い。 単純に以下のようにすると3文字分ではなく3バイト分になる。

s := "あいうえお"
fmt.Println(s[:3])

https://play.golang.org/p/ZHXH9FEneRJ

3文字分取り出したい場合は rune を使用する。

s := "あいうえお"
fmt.Println(string([]rune(s)[:3]))

https://play.golang.org/p/U1rbOpQ8H3c

参考

nilへの型アサーション

型付きnilなら型アサーションができる。

if _, ok := (interface{})(nil).(int); !ok {
	fmt.Println("no") // これが表示される
}

そのため、nilが返ってくる可能性のある関数の返り値に直接型アサーションを実行できる。 例えばこんな感じ。

if _, ok := New().(MyInterface); !ok {
	fmt.Println("nil")
}

https://play.golang.org/p/ExqB3G-1rN_-