ホームページ > バックエンド開発 > Golang > Golangの強制転送に関する知識を話しましょう

Golangの強制転送に関する知識を話しましょう

PHPz
リリース: 2023-04-23 16:20:04
オリジナル
771 人が閲覧しました

Golang を開発に使用する場合、強制型変換または強制変換と呼ばれる型変換が必要な状況によく遭遇します。強制により、変数をある型から別の型に変換できます。これは、データを処理するときに非常に便利です。この記事では、Golangの強制転送に関するデータ型変換、ポインタ変換、インターフェース変換などの関連知識を紹介します。

データ型の強制変換

Golang では、データ型の強制変換では、括弧を使用して変数を含めてから、変換する必要があるデータ型の型名を追加する必要があります。目の前で変換されました。たとえば、文字列を整数にキャストする例は次のとおりです。

str := "123"
num, err := strconv.Atoi(str)
if err == nil {
    fmt.Println(num)
}
ログイン後にコピー

この例では、strconv.Atoi 関数は文字列を整数に変換し、## を返します。 #int 型の値。 strconv.Atoi 関数に加えて、strconv.ParseBoolstrconv.ParseFloat、## など、型変換を実行できる関数がいくつかあります。 #strconv .ParseInt など型変換に関数を使用することに加えて、型変換に強制演算子を使用することもできます。たとえば、

float64

型を int 型に変換する場合の例は次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">f := 1.2 i := int(f) // f 被强制转换为 int 类型 fmt.Println(i)</pre><div class="contentsignin">ログイン後にコピー</div></div>ポインタの強制変換

Golang の場合、ポインタ変数が格納される 変数のメモリ アドレスは、ポインタを介してアクセスまたは変更できます。ポインタ変数も強制転送できます。

ポインターをキャストするには、かっこを使用してポインター変数を含めてから、変換する必要があるポインター型の型名を前に追加する必要があります。たとえば、

*int

型のポインタ変数を *string 型のポインタ変数に変換するサンプル コードは次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">num := 123 ptr := &amp;num //ptr 是一个 *int 类型的指针变量 str := (*string)(unsafe.Pointer(ptr)) // str 是一个 *string 类型的指针变量</pre><div class="contentsignin">ログイン後にコピー</div></div> この例では、を見ると、

unsafe.Pointer

がポインター型のキャストを実行するために使用されていることがわかります。 unsafe.Pointer を使用すると非常に便利ですが、安全性が低いためお勧めできません。ポインタキャストに unsafe.Pointer を使用する必要がある場合は、Golang の仕様と規則に従うように注意してください。 インターフェイスの強制転送

Golang では、インターフェイスはオブジェクト指向プログラミングをサポートするために使用される重要なメカニズムです。インターフェイス変数にはインターフェイスを実装する任意の型変数を格納でき、インターフェイス変数のメソッドを呼び出すと、その型に対応するメソッドが動的に解析されて呼び出されます。

インターフェイス変数は、インターフェイスを実装する型変数に強制できます。このプロセスは型アサーションと呼ばれます。 type アサーションの構文は

interface{}.(type)

です。たとえば、インターフェイス変数 i を強制的に文字列型に変換するサンプル コードは次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">var i interface{} i = &quot;hello, world&quot; str := i.(string) // i 被强制转换为 string 类型 fmt.Println(str)</pre><div class="contentsignin">ログイン後にコピー</div></div> インターフェイスの強制型変換を実行する場合、変換が失敗した場合、プログラム

panic

例外が直接スローされます。これを回避するには、_, ok := i.(Type) という形式を使用します。 概要

Golang の強制転送は、データを処理するときに非常に便利な機能です。データ型、ポインタ型、インターフェイス型の強制のいずれであっても、Golang の仕様と原則に従う必要があります。したがって、Golang を開発に使用する場合は、必ず Golang の開発仕様に従い、強制転送機能を慎重に使用してください。

以上がGolangの強制転送に関する知識を話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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