Golang は効率的で簡潔なプログラミング言語であるため、データ変換においても非常に柔軟です。この記事では、Golang におけるいくつかのデータ型変換方法と、実際のアプリケーションにおける考慮事項について説明します。
1. 基本的なデータ型変換
文字を数値に変換するには、以下が提供する Atoi 関数を使用できます。 strconv パッケージ。変換が失敗した場合は 0 が返されます。
サンプルコード:
package main import ( "fmt" "strconv" ) func main() { str := "123" num, err := strconv.Atoi(str) if err != nil { fmt.Println("转换失败") } else { fmt.Println("转换结果为:", num) } }
数値を文字に変換するには、strconvが提供するItoa関数を使用できます。パッケージ。
サンプル コード:
package main import ( "fmt" "strconv" ) func main() { num := 123 str := strconv.Itoa(num) fmt.Println("转换结果为:", str) }
文字をバイト スライスに変換するには、[]byte() を使用します。型変換を強制します。
サンプルコード:
package main import ( "fmt" ) func main() { str := "hello world" b := []byte(str) fmt.Println("转换结果为:", b) }
バイトスライスから文字への変換、string()強制型を使用できます。変換 。
サンプルコード:
package main import ( "fmt" ) func main() { b := []byte{104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100} str := string(b) fmt.Println("转换结果为:", str) }
int64 の値が int 表現の範囲内であれば、int を使用できます。 () 型変換を強制します。スコープ外の場合は、型アサーションが必要です。
サンプルコード:
package main import ( "fmt" ) func main() { var i64 int64 = 1234567890 var i int if i64 > int64(i) { fmt.Println("超过int类型取值范围") } else { i = int(i64) fmt.Println("转换结果为:", i) } }
注: 型変換を実行するときは、データ型の範囲の一致に注意してください。一致しないと、データの切り捨てやオーバーフローが発生する可能性があります。
2. カスタム データ型の変換
カスタム データ型の場合、その型の String メソッドをオーバーロードすることで文字列変換を実装できます。同時に、この型の MarshalJSON および UnmarshalJSON メソッドをオーバーロードすることで、JSON 形式の変換を実装することもできます。
サンプル コード:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func (p Person) String() string { return fmt.Sprintf("Name=%s, Age=%d", p.Name, p.Age) } func (p *Person) UnmarshalJSON(b []byte) error { type tmp Person t := &tmp{} err := json.Unmarshal(b, t) if err != nil { return err } p.Name = t.Name p.Age = t.Age return nil } func (p Person) MarshalJSON() ([]byte, error) { type tmp Person t := tmp(p) return json.Marshal(t) } func main() { p1 := &Person{"Tom", 18} // 转换为字符串 str := p1.String() fmt.Println("转换结果为:", str) // 转换为JSON格式 json1, _ := json.Marshal(p1) fmt.Println("转换结果为:", string(json1)) // 从JSON格式转换回来 str2 := `{"name":"Jerry","age":20}` var p2 Person json.Unmarshal([]byte(str2), &p2) fmt.Println("转换结果为:", p2) }
上記のコードを通して、カスタム型の変換では、通常どおり使用できるように変換関数を手動で実装する必要があることがわかります。
3. まとめ
この記事では、Golang における基本データ型とカスタムデータ型の変換方法をまとめ、注意点も紹介します。実際のアプリケーションでは、データをより適切に処理するために、特定のニーズに応じてさまざまな変換方法を柔軟に選択する必要があります。
以上がgolangでデータを変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。