日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編百草在這里為大家介紹一種通過引用改變接口值的方法。在編程中,有時候我們需要改變一個函數或方法的參數,但是又不希望直接返回一個新的值,而是希望通過引用的方式修改原來的值。這種情況下,我們可以使用引用參數來實現。通過引用參數,我們可以直接在函數內部修改傳遞進來的變量的值,而不需要返回一個新的值。這種方法可以提高性能,并且使代碼更加簡潔易讀。在接下來的文章中,我們將詳細介紹如何使用引用參數來改變接口值。

問題內容

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)
}

登錄后復制

輸出:

transport is nil

登錄后復制

預期:

transport is nil
{}

登錄后復制登錄后復制

游樂場

我還根據https://stackoverflow.com/a/44905592/6740589嘗試了這個:

func changetransport(r roundtripper) {
    if r == nil {
        fmt.println("transport is nil")
        d, ok := defaulttransport.(transport)
        if !ok {
            log.fatal("impossible")
        }

        if t, ok := r.(*transport); ok {
            t = &d
            fmt.println("ignoreme", t)
        } else {
            log.fatal("uff")
        }

    }
}

登錄后復制

輸出:

transport is nil
2009/11/10 23:00:00 Uff

登錄后復制

游樂場

解決方法

使用roundtripper接口的指針作為changetransport函數參數來更改指針的值:

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

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

登錄后復制

transport is nil
{}

登錄后復制登錄后復制

游樂場

分享到:
標簽:overflow
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定