ホームページ > バックエンド開発 > Golang > Golang の型強制の概念について説明します。

Golang の型強制の概念について説明します。

PHPz
リリース: 2023-04-21 14:55:37
オリジナル
696 人が閲覧しました

Golang は型強制プログラミング言語です。つまり、変数の代入やパラメーターの受け渡しを実行するときに同じデータ型を使用する必要があります。ただし、あるデータ型を別のデータ型に変換する必要がある状況もあります。これには型キャストが必要です。

この記事では、Golang における型強制の概念、使用法、注意事項について説明します。

型キャストの概念

型キャストとは、あるデータ型の値を別のデータ型の値に変換することです。これは通常、次の状況で発生します:

  1. 式の型が一致しません。
  2. 異なる型の変数間に値を割り当てます。
  3. 関数間でパラメータを渡すとき。

Golang では、型キャストを使用して、ある基本データ型を別の基本データ型に変換したり、あるカスタム型を別のカスタム型に変換したりできます。

基本的なデータ型変換

Golang では、キャストできる基本的なデータ型がいくつかあります。これらには、整数、浮動小数点、ブール値が含まれます。

  1. 整数変換

ある整数型を別の整数型に変換できます。元のデータ型がターゲット型より大きい場合、切り捨てが発生します。元のデータ型がターゲット型より小さい場合、拡張が発生します。

例:

var a int32 = 100
var b int64
b = int64(a)
fmt.Printf("%T, %v\n " 、 b、 b)

出力結果は次のとおりです:

int64, 100

  1. 浮動小数点変換

は、浮動小数点型を別の浮動小数点型に変換します。元のデータ型がターゲットの型と異なる場合、精度が失われます。

例:

var a float32 = 10.5
var b float64
b = float64(a)
fmt.Printf("%T, %v\n "、b、b)

出力結果は次のとおりです:

float64, 10.5

  1. ブール変換

ブール値を変換できますvalue 整数型または文字列型に変換します。 true を 1 に、false を 0 に変換します。

例:

var a bool = true
var b int
b = int(a)
fmt.Printf("%T, %v\n " , b, b)

出力結果は次のとおりです:

int, 1

カスタム型変換

Golang では、カスタム型間の変換明示的に行う必要があります。あるカスタム タイプを別のカスタム タイプに変換する場合は、次の 2 つのメソッドを実装する必要があります。

  1. 元のタイプをターゲット タイプに変換するメソッド。
  2. ターゲットの型を元の型に変換するメソッド。

例:

type Student struct{

Name string
Age int
ログイン後にコピー
ログイン後にコピー

}

func (s Student) tostring() string{

return fmt.Sprintf("Name: %s, Age: %d", s.Name, s.Age)
ログイン後にコピー

}

type Teacher struct{

Name string
Age int
ログイン後にコピー
ログイン後にコピー

}

func (t Teacher) tostring() string{

return fmt.Sprintf("Name: %s, Age: %d", t.Name, t.Age)
ログイン後にコピー

}

func main() {

s := Student{Name: "小明", Age: 18}
t := Teacher(s) // 将Student类型转换为Teacher类型
fmt.Println(t.tostring())

s2 := Student(t) // 将Teacher类型转换为Student类型
fmt.Println(s2.tostring())
ログイン後にコピー

}

出力結果は次のとおりです:

名前: Xiao Ming、年齢: 18

名前: 、年齢: 0

注: カスタム タイプを別のタイプに変換する場合は、両方のタイプに同じフィールドとメソッドがあることを確認する必要があります。

型アサーション

型キャストに加えて、Golang はインターフェイス内の値の実際の型を取得するための型アサーションも提供します。 Golang では、インターフェイスは汎用的な型変換メカニズムを提供できるため、非常に重要な概念です。インターフェイスから値を取得する必要がある場合は、型アサーションを使用する必要があります。

例:

var x インターフェース{} = 1
i, ok := x.(int)
fmt.Println(i, ok)

出力結果は次のとおりです:

1 true

インターフェイス値 x に int 型の値が含まれる場合、変数 i にはその値が含まれ、変数 ok は true になります。インターフェイス値 x に int 型の値が含まれていない場合、変数 i にはデフォルト値 0 が含まれ、変数 ok は false になります。

注: アサートできないインターフェイス型の場合、型アサーションはパニックになります。したがって、型アサーションを行う前に、型判定を使用してインターフェイスの実際の型を確認する必要があります。

概要

Golang は、データ型強制のためのシンプルかつ効果的なメカニズムを提供します。いずれの場合も、データ型をキャストするときは、精度の低下や切り捨てが発生する可能性があるため、注意が必要です。カスタム型を別の型に変換する場合は、両方の型に同じフィールドとメソッドがあることを確認し、変換メソッドを明示的に実装する必要があります。型アサーションは、インターフェイスから実際の型を取得するメソッドです。要約すると、適切なデータ型キャストと型アサーションは、Golang プログラマがコードの効率と読みやすさを向上させるのに大いに役立ちます。

以上がGolang の型強制の概念について説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート