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")
}
2020-06-02