亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
導(dǎo)出與未脫穎而出的標(biāo)識(shí)符
範(fàn)圍規(guī)則摘要
關(guān)鍵含義
實(shí)踐中的例子
首頁(yè) 後端開(kāi)發(fā) Golang GO的標(biāo)識(shí)符可見(jiàn)性規(guī)則是什麼(出口與未脫穎而出的)?

GO的標(biāo)識(shí)符可見(jiàn)性規(guī)則是什麼(出口與未脫穎而出的)?

Jul 31, 2025 am 08:23 AM
go 可見(jiàn)性

在GO中,標(biāo)識(shí)符可見(jiàn)性取決於資本化:1)出口標(biāo)識(shí)符以大寫(xiě)字母開(kāi)頭,在包裝外看到,形成公共API; 2)未出現(xiàn)的標(biāo)識(shí)符以小寫(xiě)字母開(kāi)頭,僅在同一軟件包內(nèi)訪問(wèn); 3)軟件包級(jí)範(fàn)圍允許外部訪問(wèn)導(dǎo)出的標(biāo)識(shí)符,而未凸出的標(biāo)識(shí)符則保持內(nèi)部; 4)沒(méi)有使用諸如公共或私人之類的關(guān)鍵字 - 可見(jiàn)性純粹是詞彙; 5)此設(shè)計(jì)支持封裝,有意的API設(shè)計(jì)以及對(duì)內(nèi)部狀態(tài)的受控訪問(wèn),如具有混合出口和未出口字段的結(jié)構(gòu)以及安全公開(kāi)私人數(shù)據(jù)的相關(guān)方法。

GO的標(biāo)識(shí)符可見(jiàn)性規(guī)則是什麼(出口與未脫穎而出的)?

在GO中,標(biāo)識(shí)符(例如變量,函數(shù),類型和方法)的可見(jiàn)性是由基於標(biāo)識(shí)符的第一個(gè)字母的簡(jiǎn)單命名約定決定的。這控制著標(biāo)識(shí)符是導(dǎo)出(包裝外的可見(jiàn))還是未驗(yàn)證(僅在同一包中可見(jiàn))。

GO的標(biāo)識(shí)符可見(jiàn)性規(guī)則是什麼(出口與未脫穎而出的)?

導(dǎo)出與未脫穎而出的標(biāo)識(shí)符

GO使用大寫(xiě)來(lái)控制可見(jiàn)性:

  • 出口標(biāo)識(shí)符大寫(xiě)字母開(kāi)始(例如, MyVarDoSomething , Person )。

    GO的標(biāo)識(shí)符可見(jiàn)性規(guī)則是什麼(出口與未脫穎而出的)?
    • 這些對(duì)於其他軟件包中的代碼可見(jiàn)。
    • 它們是包裝公共API的一部分。
  • 未出現(xiàn)的標(biāo)識(shí)符從小寫(xiě)字母開(kāi)始(例如, myVardoSomething , person )。

    • 這些僅在同一軟件包中可見(jiàn)。
    • 它們用於內(nèi)部實(shí)施細(xì)節(jié)。

例如:

GO的標(biāo)識(shí)符可見(jiàn)性規(guī)則是什麼(出口與未脫穎而出的)?
包裝櫃檯

var counter int = 0 //未出口:僅在“計(jì)數(shù)器”軟件包內(nèi)可見(jiàn)
var counter int = 0 //導(dǎo)出:其他軟件包可見(jiàn)

func遞增(){//未出現(xiàn)的功能
    櫃檯  
}

func遞增(){//導(dǎo)出功能
    增量()
}

在另一個(gè)軟件包中:

包裝主

導(dǎo)入“計(jì)數(shù)器”

func main(){
    counter.increment()//確定:增量已導(dǎo)出
    // counter.counter //編譯錯(cuò)誤:計(jì)數(shù)器未爆發(fā)
    // counter.increment()//編譯錯(cuò)誤:增量未伸出
}

範(fàn)圍規(guī)則摘要

  • 軟件包級(jí)範(fàn)圍:只能從包裝外部訪問(wèn)以大寫(xiě)字母開(kāi)頭的標(biāo)識(shí)符。
  • 內(nèi)部範(fàn)圍:在整個(gè)同一軟件包中,可以在多個(gè).go文件上訪問(wèn)未備份的標(biāo)識(shí)符。
  • 無(wú)訪問(wèn)修飾符:與Java或C#等語(yǔ)言不同,GO不使用諸如public , privateprotected關(guān)鍵字??梢?jiàn)性純粹是詞彙。

關(guān)鍵含義

  • 封裝:使用未出現(xiàn)的標(biāo)識(shí)符隱藏實(shí)現(xiàn)細(xì)節(jié)並防止外部依賴性對(duì)內(nèi)部邏輯。
  • API設(shè)計(jì):仔細(xì)選擇要導(dǎo)出的類型,功能和變量,一旦導(dǎo)出,更改它們可能會(huì)破壞兼容性。
  • 測(cè)試:您可以通過(guò)將測(cè)試文件放置在同一軟件包中來(lái)測(cè)試未出現(xiàn)的函數(shù)(例如,如果使用單獨(dú)的軟件包進(jìn)行測(cè)試,則可以使用package counter而不是package counter_test )。

實(shí)踐中的例子

類型的人struct {
    名稱字符串//導(dǎo)出字段
    年齡int //未凸出的領(lǐng)域
}

Func Newperson(名稱字符串,年齡INT) *人{(lán)
    返回與人{(lán)
        名稱:名稱,
        年齡:年齡,
    }
}

在這裡,可以直接從包裝外部訪問(wèn)Name ,但是age不能。相反,您可能會(huì)提供一種方法:

 func(p *person)age()int {
    返回P.Age //安全訪問(wèn)未爆發(fā)的字段
}

這允許受控的訪問(wèn),同時(shí)保持內(nèi)部狀態(tài)封裝。

基本上,GO的可見(jiàn)性規(guī)則很簡(jiǎn)單,但功能強(qiáng)大:大寫(xiě)= public,lowercase = private ,全部在包裝級(jí)別。沒(méi)有額外的關(guān)鍵字,只有一致的命名。

以上是GO的標(biāo)識(shí)符可見(jiàn)性規(guī)則是什麼(出口與未脫穎而出的)?的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門(mén)話題

Laravel 教程
1597
29
PHP教程
1488
72
Switch語(yǔ)句如何運(yùn)行? Switch語(yǔ)句如何運(yùn)行? Jul 30, 2025 am 05:11 AM

Go的switch語(yǔ)句默認(rèn)不會(huì)貫穿執(zhí)行,匹配到第一個(gè)條件後自動(dòng)退出。 1.switch以關(guān)鍵字開(kāi)始並可帶一個(gè)值或不帶值;2.case按順序從上到下匹配,僅運(yùn)行第一個(gè)匹配項(xiàng);3.可通過(guò)逗號(hào)列出多個(gè)條件來(lái)匹配同一case;4.不需要手動(dòng)添加break,但可用fallthrough強(qiáng)制貫穿;5.default用於未匹配到的情況,通常放最後。

如何從GO中築巢的循環(huán)中斷 如何從GO中築巢的循環(huán)中斷 Jul 29, 2025 am 01:58 AM

在Go中,要跳出嵌套循環(huán),應(yīng)使用標(biāo)籤化break語(yǔ)句或通過(guò)函數(shù)返回;1.使用標(biāo)籤化break:將標(biāo)籤置於外層循環(huán)前,如OuterLoop:for{...},在內(nèi)層循環(huán)中使用breakOuterLoop即可直接退出外層循環(huán);2.將嵌套循環(huán)放入函數(shù)中,滿足條件時(shí)用return提前返回,從而終止所有循環(huán);3.避免使用標(biāo)誌變量或goto,前者冗長(zhǎng)易錯(cuò),後者非推薦做法;正確做法是標(biāo)籤必須位於循環(huán)之前而非之後,這是Go語(yǔ)言中跳出多層循環(huán)的慣用方式。

使用上下文軟件包進(jìn)行取消和超時(shí) 使用上下文軟件包進(jìn)行取消和超時(shí) Jul 29, 2025 am 04:08 AM

USECONTEXTTOPROPAGATECELLATION ANDDEADEADLINESACROSSGOROUTINES,ENABLINGCOOPERATIVECELLATIONININHTTPSERVERS,背景任務(wù),andChainedCalls.2.withContext.withContext.withCancel(),CreatseAcancellableBableBablebableBableBableBablebableContExtandAndCandExtandCallCallCancelLcancel()

建立表演者為第三方API的客戶 建立表演者為第三方API的客戶 Jul 30, 2025 am 01:09 AM

使用專用且配置合理的HTTP客戶端,設(shè)置超時(shí)和連接池以提升性能和資源利用率;2.實(shí)現(xiàn)帶指數(shù)退避和抖動(dòng)的重試機(jī)制,僅對(duì)5xx、網(wǎng)絡(luò)錯(cuò)誤和429狀態(tài)碼重試,並遵守Retry-After頭;3.對(duì)靜態(tài)數(shù)據(jù)如用戶信息使用緩存(如sync.Map或Redis),設(shè)置合理TTL,避免重複請(qǐng)求;4.使用信號(hào)量或rate.Limiter限制並發(fā)和請(qǐng)求速率,防止被限流或封禁;5.將API封裝為接口,便於測(cè)試、mock和添加日誌、追蹤等中間件;6.通過(guò)結(jié)構(gòu)化日誌和指標(biāo)監(jiān)控請(qǐng)求時(shí)長(zhǎng)、錯(cuò)誤率、狀態(tài)碼和重試次數(shù),結(jié)合Op

如何在Go中正確複製切片 如何在Go中正確複製切片 Jul 30, 2025 am 01:28 AM

要正確複製Go中的切片,必須創(chuàng)建新的底層數(shù)組,而不是直接賦值;1.使用make和copy函數(shù):dst:=make([]T,len(src));copy(dst,src);2.使用append與nil切片:dst:=append([]T(nil),src...);這兩種方法都能實(shí)現(xiàn)元素級(jí)別的複制,避免共享底層數(shù)組,確保修改互不影響,而直接賦值dst=src會(huì)導(dǎo)致兩者引用同一數(shù)組,不屬於真正複製。

如何將template.parsefs與GO嵌入? 如何將template.parsefs與GO嵌入? Jul 30, 2025 am 12:35 AM

使用template.ParseFS與embed包可將HTML模板編譯進(jìn)二進(jìn)製文件。 1.導(dǎo)入embed包並用//go:embedtemplates/.html將模板文件嵌入embed.FS變量;2.調(diào)用template.Must(template.ParseFS(templateFS,"templates/.html"))解析所有匹配的模板文件;3.在HTTP處理器中通過(guò)tmpl.ExecuteTemplate(w,"home.html",nil)渲染指定

與時(shí)間和日期一起工作 與時(shí)間和日期一起工作 Jul 30, 2025 am 02:51 AM

Go使用time.Time結(jié)構(gòu)體處理日期和時(shí)間,1.格式化和解析使用參考時(shí)間“2006-01-0215:04:05”對(duì)應(yīng)“MonJan215:04:05MST2006”,2.創(chuàng)建日期使用time.Date(year,month,day,hour,min,sec,nsec,loc)並指定時(shí)區(qū)如time.UTC,3.時(shí)區(qū)處理通過(guò)time.LoadLocation加載位置並用time.ParseInLocation解析帶時(shí)區(qū)的時(shí)間,4.時(shí)間運(yùn)算使用Add、AddDate和Sub方法進(jìn)行加減和計(jì)算間隔,

如何在GO中導(dǎo)入本地軟件包? 如何在GO中導(dǎo)入本地軟件包? Jul 30, 2025 am 04:47 AM

要正確導(dǎo)入本地包,需使用Go模塊並遵循目錄結(jié)構(gòu)與導(dǎo)入路徑匹配原則。 1.使用gomodinit初始化模塊,如gomodinitexample.com/myproject;2.將本地包放在子目錄中,如mypkg/utils.go,包聲明為packagemypkg;3.在main.go中通過(guò)完整模塊路徑導(dǎo)入,如import"example.com/myproject/mypkg";4.避免相對(duì)導(dǎo)入、路徑不匹配或命名衝突;5.對(duì)於模塊外的包可使用replace指令。只要確保模塊初始化

See all articles