ホームページ >バックエンド開発 >Golang >参照によるインターフェース値の変更

参照によるインターフェース値の変更

王林
王林転載
2024-02-13 23:10:09865ブラウズ

参照によるインターフェース値の変更

php エディタ Baicao は、参照を通じてインターフェイスの値を変更する方法を紹介します。プログラミングでは、関数やメソッドのパラメータを変更する必要がある場合がありますが、新しい値を直接返すのではなく、参照を通じて元の値を変更したいことがあります。この場合、参照パラメータを使用できます。パラメーターを参照すると、新しい値を返さずに、渡された変数の値を関数内で直接変更できます。このアプローチによりパフォーマンスが向上し、コードがより簡潔で読みやすくなります。次の記事では、参照パラメータを使用してインターフェイスの値を変更する方法について詳しく説明します。

質問内容

package main

import (
    "fmt"
)

// -------- library code. can't change ------------
type client struct {
    transport roundtripper
}

type roundtripper interface {
    do()
}

type transport struct{}

func (d transport) do() {}

var defaulttransport roundtripper = transport{}

// -------- my code. can change ------------
func changetransport(r roundtripper) {
    if r == nil {
        fmt.println("transport is nil")
        r = defaulttransport
    }
}

func main() {
    c := client{}
    changetransport(c.transport)
    fmt.println(c.transport)
}

出力:

リーリー ###期待される:### リーリー ###遊び場###

私も https://stackoverflow.com/a/44905592/6740589 に基づいてこれを試しました:

リーリー

出力:

リーリー

Playground

Solution

roundtripper

インターフェイスのポインタを

changetransport

関数パラメータとして使用して、ポインタの値を変更します。 リーリー リーリー #########遊び場#########

以上が参照によるインターフェース値の変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。