Go でポインター レシーバーを使用して単純な型の値を変更する方法

Linda Hamilton
リリース: 2024-11-19 11:32:02
オリジナル
453 人が閲覧しました

How to Modify a Simple Type's Value Using a Pointer Receiver in Go?

Go のポインター レシーバーによる単純型の値の変更

ポインター レシーバー メソッドによる単純型の値の変更は、 Go の一般的なタスク。ただし、このコンテキストでポインターがどのように動作するかを理解することが重要です。

提供された例では:

<br>type FooInt int</p>
<p>func (fi *FooInt ) FromString(i 文字列) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">num, _ := strconv.Atoi(i)
tmp := FooInt(num)
fi = &tmp
ログイン後にコピー

}

ポインターがレシーバーとして渡されると、そのポインターのコピーがメソッド内で作成されます。メソッド内のコピーに加えられた変更は、元のポインターには影響しません。

コード スニペットの *fi は、FromString メソッドに渡される fi ポインターのコピーです。 &tmp を *fi に割り当てると、基本的に元の fi ポインターではなく、コピーの値が変更されます。

元のポインターの値を変更するには、次のいずれかを行う必要があります。

  • 新しいポインタ値を返します:

    <br> func (fi <em>FooInt) FromString(i string) </em>FooInt {</p>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      tmp := FooInt(num)
      return &tmp
    ログイン後にコピー

}

  • 非 nil を渡す変更する値へのポインタ:

    <br> func (fi <em>FooInt) FromString(i string, p </em>*FooInt) {</p>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      tmp := FooInt(num)
      *p = &tmp
    ログイン後にコピー
  • }

  • 受信側が nil でないことを確認します:

    <br> func (fi *FooInt) FromString(i string ) {</p>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      *fi = FooInt(num)
    ログイン後にコピー
  • }

    レシーバーが有効なポインターであることを確認し、メソッド内でポイントされた値を変更することで、ポインター レシーバーを介して元の単純型の値を効果的に変更できます。 .

    以上がGo でポインター レシーバーを使用して単純な型の値を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    ソース:php.cn
    前の記事:UTLS および HTTP 1.1 リクエストでプロキシを使用するにはどうすればよいですか? 次の記事:Go から MongoDB にアクセスするときに型の不一致を処理するにはどうすればよいですか?
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    最新の問題
    関連トピック
    詳細>
    人気のおすすめ
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート