国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
go指針語法及viper庫使用中的尋址問題
首頁 後端開發(fā) Golang 在使用Go語言和viper庫時,為什麼傳遞指針的指針是必要的?

在使用Go語言和viper庫時,為什麼傳遞指針的指針是必要的?

Apr 02, 2025 pm 04:00 PM
go語言 ai 為什麼 igs

go指針語法及viper庫使用中的尋址問題

在使用go語言進行編程時,理解指針的語法和使用方法至關(guān)重要,尤其是在與第三方庫如viper結(jié)合使用時,可能會遇到一些需要深入理解的問題。今天我們要探討的問題是關(guān)於在viper庫的使用中,如何正確地傳遞參數(shù),以及為什麼傳遞一個指針的指針是必要的。

在我們的項目中有幾個模塊:setting、section、global和main。具體代碼如下:

setting模塊:

 type setting struct {
    vp *viper.viper
}

func newsetting() (*setting, error) {
    vp := viper.new()
    vp.setconfigname("config")
    vp.addconfigpath("configs/")
    vp.setconfigtype("yaml")
    err := vp.readinconfig()
    if err != nil {
        return nil, err
    }

    return &setting{vp: vp}, nil
}

section模塊:

 type serversettings struct {
    runmode string
    httpport string
    readtimeout time.duration
    writetimeout time.duration
}

func (s *setting) readsection(k string, v interface{}) error {
    err := s.vp.unmarshalkey(k, v)
    if err != nil {
        return err
    }

    return nil
}

global模塊:

 var serversetting *setting.serversettings

main模塊:

 setting, err := setting.newsetting()

setting.readsection("server", &global.serversetting)

現(xiàn)在,如果在main模塊中將第二行修改為setting.readsection("server", global.serversetting),會報錯result must be addressable (a pointer)。這是為什麼呢?

問題在於,global.serversetting已經(jīng)是一個指針,為什麼在調(diào)用readsection方法時,還需要傳遞它的地址呢?

在viper庫的源碼中有這樣的說明:

 // newdecoder returns a new decoder for the given configuration. once
// a decoder has been returned, the same configuration must not be used
// again.
func newdecoder(config *decoderconfig) (*decoder, error) {
    val := reflect.valueof(config.result)
    if val.kind() != reflect.ptr {
        return nil, errors.new("result must be a pointer")
    }

    val = val.elem()
    if !val.canaddr() {
        return nil, errors.new("result must be addressable (a pointer)")
    }
}

從這段代碼可以看出,傳遞的參數(shù)不僅需要是一個指針,還需要是可以尋址的(can be addressable)。當你傳遞一個結(jié)構(gòu)體的指針時,它本身並不能被尋址,因此會導致錯誤。

為了驗證這一點,我們可以看一下下面的例子:

 package main

import (
    "fmt"
    "reflect"
)

var a *db

type db struct {
}

func main() {
    val := reflect.valueof(a)
    val = val.elem()
    fmt.println(val.canaddr())

    val = reflect.valueof(&a)
    val = val.elem()
    fmt.println(val.canaddr())
}

運行這段代碼會得到如下輸出:

 false
true

這表明傳遞a本身(即一個指針)時,其元素無法被尋址,而傳遞&a(即指針的指針)時,其元素是可以被尋址的。

因此,在使用readsection方法時,我們需要傳遞&global.serversetting,因為這樣傳遞的是一個指針的地址,它是可以被尋址的,從而滿足viper庫的要求。

以上是在使用Go語言和viper庫時,為什麼傳遞指針的指針是必要的?的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

2025年7月加密貨幣代幣高回報預期:炒作還是現(xiàn)實? 2025年7月加密貨幣代幣高回報預期:炒作還是現(xiàn)實? Jul 04, 2025 pm 08:42 PM

隨著2025年7月的臨近,加密市場正熱議哪些代幣可能帶來高回報。 Pi、PEPE和FloppyPepe這些名字是否真的值得冒險投資? 2025年7月值得關(guān)注的潛力加密貨幣:虛火還是真金?進入2025年中旬,關(guān)於高收益加密資產(chǎn)的討論熱度持續(xù)升溫。比特幣走勢與“山寨幣季節(jié)”預期引發(fā)投資者關(guān)注,像PiNetwork、PEPE和FloppyPepe這類代幣是否具備帶來可觀投資回報的潛力?我們來逐一分析其前景。山寨幣行情:七月能否如願以償?在比特幣有望刷新??歷史高位的背景下,“山寨幣季節(jié)”似乎正在醞釀?;?/p>

幣安第25期HODLer空投來襲,1.25億SAHARA等你來瓜分 幣安第25期HODLer空投來襲,1.25億SAHARA等你來瓜分 Jul 04, 2025 pm 06:06 PM

在當今科技飛速發(fā)展的時代,人工智能與區(qū)塊鏈的融合正逐漸成為新的趨勢。 Sahara AI (SAHARA) 項目應運而生,它致力於打造首個全棧 AI 原生區(qū)塊鏈平臺,讓人工智能的未來更加觸手可及、公平公正,並面向所有人開放。

凱恩·布朗首部浪漫喜劇電影:從鄉(xiāng)村舞臺走向銀幕! 凱恩·布朗首部浪漫喜劇電影:從鄉(xiāng)村舞臺走向銀幕! Jul 04, 2025 pm 08:48 PM

鄉(xiāng)村音樂偶像凱恩·布朗(KaneBrown)即將在浪漫喜劇《指定伴郎》(TheTokenGroomsman)中完成他的電影處女秀,與泰勒·洛特納(TaylorLautner)聯(lián)手獻上精彩演出。準備好迎接一場笑淚交織的銀幕盛宴吧!從鄉(xiāng)村歌手到銀幕新面孔,凱恩·布朗開啟全新篇章!各位粉絲快穩(wěn)住你們的牛仔帽!這位風頭正勁的鄉(xiāng)村樂壇巨星凱恩·布朗將暫別舞臺,轉(zhuǎn)而投身大銀幕。他將在即將上映的浪漫喜劇《指定伴郎》中首次出演劇情長片主角——不是客串,而是全身心投入演員身份的一次大膽嘗試!從納什維爾出發(fā),目的地

埃隆·馬斯克、薩姆·奧爾特曼與Robinhood:一場代幣化的拉鋸戰(zhàn)? 埃隆·馬斯克、薩姆·奧爾特曼與Robinhood:一場代幣化的拉鋸戰(zhàn)? Jul 04, 2025 pm 08:30 PM

Robinhood推出的OpenAI和SpaceX代幣化股票引發(fā)爭議,埃隆·馬斯克(ElonMusk)與薩姆·阿爾特曼(SamAltman)就所謂“假股權(quán)”的性質(zhì)展開互懟。近期,埃隆·馬斯克、薩姆·阿爾特曼與Robinhood的交集成為公眾關(guān)注焦點,這一切都源於代幣化股權(quán)。 Robinhood向歐洲用戶推出OpenAI和SpaceX等私營公司的代幣化股票,引發(fā)了激烈爭論,並伴隨著各方的澄清與批評。 Robinhood的代幣化股權(quán):大膽嘗試?由CEO弗拉德·特內(nèi)夫(VladTenev)主導的Robin

Remittix、門羅幣與加密貨幣-法幣的演變:為何引發(fā)熱議? Remittix、門羅幣與加密貨幣-法幣的演變:為何引發(fā)熱議? Jul 04, 2025 pm 09:33 PM

探索Remittix(RTX)、門羅幣(XMR)與加密-法幣趨勢:這些項目如何通過實用性和社區(qū)導向塑造加密貨幣的未來。 Remittix、門羅幣與加密-法幣演進:到底在熱炒什麼?加密市場始終處於動態(tài)變化之中,新舊項目都在爭奪投資者目光。目前,Remittix(RTX)、門羅幣(XMR)以及加密-法幣方向正成為討論焦點。我們來一探究竟,這波熱度背後有哪些驅(qū)動力? Remittix:潛力初現(xiàn)的新興代幣Remittix正逐步贏得市場關(guān)注,其發(fā)展軌跡被部分人士類比為比特幣和以太坊早期階段。 “CryptoR

Impossible Cloud Network(ICNT)是什麼?怎麼樣?幣安即將上線項目ICN全面介紹 Impossible Cloud Network(ICNT)是什麼?怎麼樣?幣安即將上線項目ICN全面介紹 Jul 07, 2025 pm 07:06 PM

目錄一、ICN是什麼?二、ICNT最新動態(tài)三、ICN與其他DePIN項目的對比及經(jīng)濟模型四、DePIN賽道的下一階段展望結(jié)語5月底,ICN(ImpossibleCloudNetwork)@ICN_Protocol宣布獲得NGPCapital戰(zhàn)略投資,估值達到4.7億美元,很多人第一反應是:“小米投Web3了?”雖然這不是雷軍直接出手,但出手的,是曾押中小米、Helium、WorkFusion的那

穩(wěn)定幣為什麼不會暴跌? USDT到底靠什麼保值?穩(wěn)定幣基礎(chǔ)解析 穩(wěn)定幣為什麼不會暴跌? USDT到底靠什麼保值?穩(wěn)定幣基礎(chǔ)解析 Jul 04, 2025 pm 01:48 PM

穩(wěn)定幣作為加密貨幣市場中的一類特殊資產(chǎn),其主要目標是維持價格的穩(wěn)定,通常與某種法定貨幣(如美元)或其他穩(wěn)定資產(chǎn)掛鉤。這種穩(wěn)定性使得穩(wěn)定幣在加密世界中扮演著重要的角色,充當價值儲存、交易媒介以及避險資產(chǎn)的功能。

比特幣、加密貨幣、立即購買:解碼最新趨勢與隱藏瑰寶 比特幣、加密貨幣、立即購買:解碼最新趨勢與隱藏瑰寶 Jul 04, 2025 pm 09:42 PM

比特幣現(xiàn)在是最好的加密貨幣投資選擇嗎?探索比特幣的飆升、崛起的山寨幣和頂級P2E遊戲。比特幣、加密貨幣、立即購買:解讀最新趨勢與隱藏機遇比特幣最近表現(xiàn)活躍,整個加密貨幣市場都在熱議?,F(xiàn)在是買入的最佳時機嗎?讓我們深入探討最新的趨勢,並揭示這個不斷變化的市場中潛在的投資機會。比特幣強勢上漲:突破109,000美元——未來走勢如何?比特幣近期成功突破109,000美元關(guān)口,這一漲勢受到貝萊德(BlackRock)ETF利好消息、全球形勢改善以及美元貶值的影響。這次突破再次激發(fā)了人們對它刷新歷史高點的

See all articles