2021-10-22
創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為開原企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、做網(wǎng)站,開原網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
每一個變量(常量、類型或函數(shù))在程序中都有一定的作用范圍。稱之為作用域。
Go語言在編譯時會檢查每一個變量是否使用過,未使用過的變量就會編譯錯誤。
根據(jù)變量定義位置的不同,可以分為以下三個類型:
在函數(shù)體內(nèi)被聲明的變量稱之為局部變量,作用在函數(shù)體內(nèi),函數(shù)的參數(shù)和返回值變量都屬于局部變量。局部變量不會一直存在,在函數(shù)被調(diào)用時存在,函數(shù)調(diào)用結(jié)束后變量就會被銷毀,即生命周期。
例子:其中a、b均為局部變量,只會在main函數(shù)內(nèi)有效
在函數(shù)體外被聲明的變量稱之為全局變量,作用于所有源文件。不包含這個全局變量的源文件需要使用"import"關(guān)鍵字引入全局變量所在的源文件之后才能使用這個全局變量。
全局變量聲明必須以 var 關(guān)鍵字開頭,如果想要在外部包中使用全局變量的首字母必須大寫。
例如:global為全局在main2和main函數(shù)中都能使用
函數(shù)名后面的小括號里定義的變量, 用于接受來自調(diào)用函數(shù)的參數(shù)。用于接收調(diào)用該函數(shù)時傳入的參數(shù)。
例如:下面的例子中,第十七行a、b為sum函數(shù)定義的形參,用于傳入main函數(shù)中的AF、BF
expvar 包是 Golang 官方提供的公共變量包,它可以輔助調(diào)試全局變量。支持一些常見的類型: float64 、 int64 、 Map 、 String 。如果我們的程序要用到上面提的四種類型(其中,Map 類型要求 Key 是字符串)??梢钥紤]使用這個包。
這些基礎(chǔ)的功能就不多說了,大家可以直接看官方的 文檔 。
看源碼的時候發(fā)現(xiàn)一個非常有意思的調(diào)試接口, /debug/vars 會把所有注冊的變量打印到接口里面。這個接口很有情懷。
感覺這個包還是針對簡單變量,比如整形、字符串這種比較好用。
看到就寫了,并沒有什么沉淀,寫得挺亂的。這個包很簡單,但是里面還是有些可以借鑒的編碼和設(shè)計。新版本的 Golang 已經(jīng)能解析整形為 Key 的哈希表了,這個包啥時候能跟上支持一下?
import "workname/packetfolder"
導(dǎo)入多個包
方法調(diào)用 包名.函數(shù)//不是函數(shù)或結(jié)構(gòu)體所處文件或文件夾名
packagename.Func()
前面加個點(diǎn)表示省略調(diào)用,那么調(diào)用該模塊里面的函數(shù),可以不用寫模塊名稱了:
當(dāng)導(dǎo)入一個包時,該包下的文件里所有init()函數(shù)都會被執(zhí)行,然而,有些時候我們并不需要把整個包都導(dǎo)入進(jìn)來,僅僅是是希望它執(zhí)行init()函數(shù)而已。下劃線的作用僅僅是為了調(diào)用init()函數(shù),所以無法通過包名來調(diào)用包中的其他函數(shù)
import _ package
變量聲明必須要使用否則會報錯。
全局變量運(yùn)行聲明但不使用。
func 函數(shù)名 (參數(shù)1,參數(shù)2,...) (返回值a 類型a, 返回值b 類型b,...)
func 函數(shù)名 (參數(shù)1,參數(shù)2,...) (返回值類型1, 返回值類型2,...)
func (this *結(jié)構(gòu)體名) 函數(shù)名(參數(shù) string) (返回值類型1, 返回值類型2){}
使用大小來區(qū)分函數(shù)可見性
大寫是public類型
小寫是private類型
func prifunc int{}
func pubfunc int{}
聲明靜態(tài)變量
const value int
定義變量
var value int
聲明一般類型、接口和結(jié)構(gòu)體
聲明函數(shù)
func function () int{}
go里面所有的空值對應(yīng)如下
通道類型
內(nèi)建函數(shù) new 用來分配內(nèi)存,它的第一個參數(shù)是一個類型,不是一個值,它的返回值是一個指向新分配類型零值的指針
func new(Type) *Type
[這位博主有非常詳細(xì)的分析]
Go 語言支持并發(fā),我們只需要通過 go 關(guān)鍵字來開啟 goroutine 即可。
goroutine 是輕量級線程,goroutine 的調(diào)度是由 Golang 運(yùn)行時進(jìn)行管理的。
同一個程序中的所有 goroutine 共享同一個地址空間。
語法格式如下:
通道(channel)是用來傳遞數(shù)據(jù)的一個數(shù)據(jù)結(jié)構(gòu)。
通道的聲明
通道可用于兩個 goroutine 之間通過傳遞一個指定類型的值來同步運(yùn)行和通訊。操作符 - 用于指定通道的方向,發(fā)送或接收。如果未指定方向,則為雙向通道。
[這里有比較詳細(xì)的用例]
go里面的空接口可以指代任何類型(無論是變量還是函數(shù))
聲明空接口
go里面的的強(qiáng)制類型轉(zhuǎn)換語法為:
int(data)
如果是接口類型的強(qiáng)制轉(zhuǎn)成其他類型的語法為:
go里面的強(qiáng)制轉(zhuǎn)換是將值復(fù)制過去,所以在數(shù)據(jù)量的時候有比較高的運(yùn)行代價
定義+初始化。
舉個例子
var num int //定義一個整形變量num,默認(rèn)為0
var number int = 21 //定義一個整型變量number,并賦值為21
局部變量
在函數(shù)體內(nèi)聲明的變量稱之為局部變量,它們的作用域只在函數(shù)體內(nèi),參數(shù)和返回值變量也是局部變量。
以下實(shí)例中 main() 函數(shù)使用了局部變量 a, b, c:
package main
import "fmt"
func main() {
/* 聲明局部變量 */
var a, b, c int
/* 初始化參數(shù) */
a = 10
b = 20
c = a + b
fmt.Printf ("結(jié)果: a = %d, b = %d and c = %d\n", a, b, c)
}
以上實(shí)例執(zhí)行輸出結(jié)果為:
結(jié)果: a = 10, b = 20 and c = 30
全局變量
在函數(shù)體外聲明的變量稱之為全局變量,全局變量可以在整個包甚至外部包(被導(dǎo)出后)使用。
全局變量可以在任何函數(shù)中使用,以下實(shí)例演示了如何使用全局變量:
package main
import "fmt"
/* 聲明全局變量 */
var g int
func main() {
/* 聲明局部變量 */
var a, b int
/* 初始化參數(shù) */
a = 10
b = 20
g = a + b
fmt.Printf("結(jié)果: a = %d, b = %d and g = %d\n", a, b, g)
}
以上實(shí)例執(zhí)行輸出結(jié)果為:
結(jié)果: a = 10, b = 20 and g = 30
Go 語言程序中全局變量與局部變量名稱可以相同,但是函數(shù)內(nèi)的局部變量會被優(yōu)先考慮。實(shí)例如下:
package main
import "fmt"
/* 聲明全局變量 */
var g int = 20
func main() {
/* 聲明局部變量 */
var g int = 10
fmt.Printf ("結(jié)果: g = %d\n", g)
}
以上實(shí)例執(zhí)行輸出結(jié)果為:
結(jié)果: g = 10
文章標(biāo)題:go語言聲明全局變量 go語言解釋執(zhí)行
網(wǎng)站路徑:http://jinyejixie.com/article40/doohpeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站建設(shè)、軟件開發(fā)、App開發(fā)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)