go基礎(chǔ)之變量?jī)?nèi)容

二、內(nèi)容

2.1)、變量定義
s := ""
var s string
var s = ""
var s string = ""

第一種形式,只能用在一個(gè)函數(shù)內(nèi)部,爾package級(jí)別的便利,禁止用這樣的聲明方式;
第二種形式的以來(lái)于string類(lèi)型的內(nèi)部初始化機(jī)制,被初始化為空字符串;
第三種形式使用得很少,除非同時(shí)聲明多個(gè)變量;
第四種形式會(huì)顯示的表面變量的類(lèi)型,在多變量同時(shí)聲明時(shí)可以用到;

var聲明語(yǔ)句可以創(chuàng)建一個(gè)特定類(lèi)型的變量,然后給變量附加一個(gè)名字并且設(shè)置變量的初始值。

var  變量名字  類(lèi)型 = 表達(dá)式

如果表達(dá)式被省略,那么將用零值初始化該變量。數(shù)值類(lèi)型變量對(duì)應(yīng)的零值是0,布爾類(lèi)型變量對(duì)應(yīng)的零值是fasle,字符串類(lèi)型對(duì)應(yīng)的零值是空字符串,接口或引用類(lèi)型(包括slice、map、chan和函數(shù))變量對(duì)應(yīng)的零值是nil。數(shù)組或結(jié)構(gòu)體等聚合類(lèi)型對(duì)應(yīng)的零值是每個(gè)元素或字段都是對(duì)應(yīng)該類(lèi)型的零值。

var i, j, k int 
var b ,f ,s = true, 2.3, "four"

簡(jiǎn)短變量的聲明方式如下:
a := 0.0
因?yàn)楹?jiǎn)潔和靈活的特點(diǎn),簡(jiǎn)短變量聲明被廣泛用于大部分的局部變量的聲明和初始化。
var形式的聲明語(yǔ)句往往是用于需要顯式指定變量類(lèi)型的地方或者因?yàn)樽兞可院髸?huì)被重新賦值而初始化
簡(jiǎn)短變量聲明語(yǔ)句中必須至少要聲明一個(gè)新的變量

a,b  := 1,2
a,b := 3,4 //編譯不通過(guò)
a,c := 5,6 //編譯通過(guò)
c := 7 //編譯不通過(guò)

2.2)、變量命名

命名規(guī)則:一個(gè)名字必須意一個(gè)字母(Unicode字母)或下花絮開(kāi)頭,后面可以跟任意數(shù)量的字母、數(shù)字或下劃線。大小寫(xiě)字母是不同的。

go中有25個(gè)關(guān)鍵字;關(guān)鍵字不能用于自定義名字,只能在特定語(yǔ)法結(jié)構(gòu)中使用


圖1.png

另外還有30個(gè)預(yù)定義的名字,主要對(duì)應(yīng)內(nèi)建的常量、類(lèi)型和函數(shù)

圖2.png

這些內(nèi)部預(yù)先定義的名字并不是關(guān)鍵字,你可以再定義中重新使用它們。在一些特殊的常見(jiàn)中重新定義它們也是有意義的,但是也要注意避免過(guò)度而引起語(yǔ)義混亂

變量名的大小寫(xiě)會(huì)影響其使用范圍

如果一個(gè)名字是大寫(xiě)字母開(kāi)頭的(前提是定義的包級(jí)別的變量),那么它將是導(dǎo)出的,即使是可以被外部的包訪問(wèn)的。


2.3)、聲明

go中有四種聲明語(yǔ)句:var 、const、type、func,分別對(duì)應(yīng)變量、常量、類(lèi)型和函數(shù)實(shí)體對(duì)象的聲明。

一個(gè)函數(shù)的聲明由一個(gè)函數(shù)的名字、參數(shù)列表、一個(gè)可選的返回值列表和包含函數(shù)定義的函數(shù)體組成。如果函數(shù)沒(méi)有返回值,那么返回值列表是省略的。

2.4)、指針

一個(gè)指針的值是另外一個(gè)變量的地址。一個(gè)指針對(duì)應(yīng)變量在內(nèi)存中的存儲(chǔ)位置。并不是每一個(gè)值都會(huì)有一個(gè)內(nèi)存地址,但對(duì)于每一個(gè)變量必然有對(duì)應(yīng)的內(nèi)存地址。通過(guò)指針我們可以直接讀或者更新對(duì)應(yīng)變量的值,而不需要知道該變量的名字。

x := 1
p = &x   //地址
fmt.Println(*p)   //打印指針指向的值
*p = 2
fmt.Println(*p)
2.5)、包的初始化

每個(gè)文件都可以包含多個(gè)init初始化函數(shù),在程序開(kāi)始執(zhí)行的時(shí)候按照它們聲明的順序被自動(dòng)調(diào)用。

每個(gè)包在解決依賴(lài)的前提下,以導(dǎo)入聲明的順序初始化,每個(gè)包只會(huì)初始化一次。因此,如果一個(gè)p包導(dǎo)入了q包,那么在p包初始化的時(shí)候可以認(rèn)為q包必然已經(jīng)初始化了。初始化工作自下而上進(jìn)行的。main包最后被初始化,以這種方式,可以確保在main函數(shù)執(zhí)行之前,所有

2.6)、作用域

聲明語(yǔ)句的作用域?qū)?yīng)的是一個(gè)源代碼的文本區(qū)域;它是一個(gè)編譯時(shí)的屬性。
一個(gè)變量的生命周期是指程序運(yùn)行時(shí)變量存在的有效時(shí)間段,在此時(shí)間區(qū)域內(nèi)它可以被程序的其他部分引用,是一個(gè)運(yùn)行時(shí)概念

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容