Golang言語ミニマム型変換ライブラリキャストを詳しく使う
01 はじめに
Golang言語のプロジェクト開発では、Golang言語が強型であるため、型変換がよく利用されます。今回は、型変換を容易にするための機能を提供し、開発効率を大幅に向上させるミニマルな型変換の三点セットである型変換三点セット - github.com/spf13/cast - を紹介します。
例えば、文字列を整数に変換するために cast.ToInt() を使用する場合、引数が "4" のような int 文字列である場合のみ整数に変換され、それ以外は整数の 0 値に変換されるのです。
実際、各種整数と浮動小数点型の変換が必要な場合は強制型変換を、各種整数と文字列の変換は標準ライブラリのstrconv演算を使えば良いのですが、どちらもエレガントな使い方ではありませんね。また、変換する値がインターフェイス型である場合、まず型をアサートしてから型変換を行う必要があり、いずれもややこしい。キャストはこれを簡単にし、私たちのコードをよりエレガントにするのです。
ToXxx()、cast.ToXxxE()関数を用いて、比較的よく使われる文字列型への変換など、簡単な例を挙げながらキャストの使い方を紹介します。
02 文字列型に変換する
与えられた引数を文字列型に変換するには cast.ToString() 関数を使用します。与えられた引数を文字列型に変換できない場合は、型ゼロの値(文字列型ゼロ - 空文字列)を返します。
コード例です。
a := 1
fmt.Printf("val=%v type=%T\n", cast.ToString(a), cast.ToString(a))
b := 3.14
fmt.Printf("val=%v type=%T\n", cast.ToString(b), cast.ToString(b))
c := "hello"
fmt.Printf("val=%v type=%T\n", cast.ToString(c), cast.ToString(c))
d := []byte("golang")
fmt.Printf("val=%v type=%T\n", cast.ToString(d), cast.ToString(d))
var e interface{} = "frank"
fmt.Printf("val=%v type=%T\n", cast.ToString(e), cast.ToString(e))
f := []int{1, 2, 3}
fmt.Printf("val=%v type=%T\n", f, f)
fmt.Printf("val=%v type=%T\n", cast.ToString(nil), cast.ToString(nil))
出力結果です。
val=1 type=string
val=3.14 type=string
val=hello type=string
val=golang type=string
val=frank type=string
val= type=string // 値は空の文字列です。
val= type=string // 値は空の文字列です。
上のコードを読むと、最後の2行はどちらも空文字列を出力しています。そこで、cast.ToStringE()関数を使って引数fを変換して、その戻り値を見ます。
コード例です。
v, err := cast.ToStringE([]int{1,2,3})
if err ! = nil {
fmt.Println(err)
return
}
fmt.Printf("val=%v type=%T\n", v, v)
出力結果です。
型 []int{1, 2, 3} を文字列にキャストできません。
上記のコードを読むと、同じ引数を異なる関数(cast.ToString()とcast.ToStringE())を使用して、異なる結果を返していることがわかります。
ToStringE()ですが、castが返したエラーを無視するだけです。
ソースコードです。
// ToString casts an interface to a string type.
func ToString(i interface{}) string {
v, _ := ToStringE(i)
return v
}
cast.ToxxE()関数を使って、変換後に得られる型ゼロの値がエラーであるかどうかを判断することができます。
03 まとめ
この記事では、開発効率を大幅に向上させ、コードをよりエレガントにし、より簡単かつ安全に型変換を操作できるようにする、最小限の型変換のためのトリプレット・ライブラリであるcastを紹介します。
ToString()関数です。そのほかにも、今回は取り上げないが多くの型をサポートしているので、興味のある方は公式ドキュメントやソースコードを読んで詳細を確認することをお勧めする。
Golang言語最小限の型変換ライブラリcastについての記事は以上です。Golang型変換ライブラリcastの詳細については、過去の記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Go言語の基本 go fmtコマンドの使用例 詳細
-
Go言語の基本 goインストールコマンドの使用例 詳細
-
Go言語 netパッケージ RPCリモートコール 3つの方法 httpとjson-rpcとtcp
-
Go言語 初心者のための7つのチュートリアル VI ネットワーク・プログラミング
-
Go Pluginでプラグインプログラミングを簡単に実装する方法
-
2つのcsvの実装例をマージするために移動します。
-
Goにおけるタイムアウト制御の解決策
-
囲碁におけるクロージャーの基本原理
-
Golangのリフレクションを使った構造体のエレガントなソート機能
-
Redisをタスクキューとして利用する(Golang)