02.手撕Go語言-基礎(chǔ)

第一個Go程序

02.01.png

解讀:

a. package

Go源文件開頭必須使用package聲明代碼所屬包,包是Go代碼分發(fā)的最基本單位。若程序需要運(yùn)行包名必須為main墙杯。

b. import

import用于導(dǎo)入程序依賴的所有的包班缰。此程序依賴于fmt包法梯。

c. func

func用于定義函數(shù)勋磕。main函數(shù)是程序的入口,若程序需要運(yùn)行必須聲明main函數(shù),main函數(shù)無參數(shù)也無返回值

d. fmt.Println

調(diào)用fmt.Println函數(shù)將參數(shù)信息打印到控制臺

編譯&運(yùn)行

a. go build: 用于編譯&鏈接程序或包

go build -work -x -o helloworld.exe main.go

b. go run:用于直接運(yùn)行程序

go run -work -x main.go

c. go clean:清除編譯文件

常用參數(shù):

  • -x: 打印編譯過程執(zhí)行的命令侄刽,并完成編譯或運(yùn)行
  • -n: 只打印編譯過程執(zhí)行命令
  • -work:打印編譯過程的臨時目錄
  • -o: 指定編譯結(jié)果文件

程序結(jié)構(gòu)

Go源文件以package聲明開頭,說明源文件所屬的包朋凉,接著使用import導(dǎo)入依賴的包,其次為包級別的變量醋安、常量杂彭、類型和函數(shù)的聲明和賦值墓毒。函數(shù)中可定義局部的變量、常量

基本組成元素

標(biāo)識符

標(biāo)識符是編程時所使用的名字亲怠,用于給變量所计、常量、函數(shù)团秽、類型主胧、接口、包名等進(jìn)行命名习勤,以建立名稱和使用之間的關(guān)系踪栋,Go語言標(biāo)識符的命名規(guī)則:

  1. 只能由非空字母(Unicode)、數(shù)字图毕、下劃線(_)組成
  2. 只能以字母或下劃線開頭
  3. 不能Go語言關(guān)鍵字

建議:

  1. 避免使用Go語言預(yù)定義標(biāo)識符
  2. 建議使用駝峰式

說明

  1. 標(biāo)識符區(qū)分大小寫

Go語言提供一些預(yù)先定義的標(biāo)識符用來表示內(nèi)置的常量夷都、類型、函數(shù)予颤,在自定義標(biāo)識符時應(yīng)避免使用:

  • 內(nèi)置常量:true囤官、false、nil蛤虐、iota
  • 內(nèi)置類型:bool党饮、byte、rune驳庭、int刑顺、int8、int16嚷掠、int32捏检、int64、uint不皆、uint8贯城、unit16、unit32霹娄、unit64能犯、uintptr、float32犬耻、float64踩晶、complex64、complex128枕磁、string渡蜻、error
  • 內(nèi)置函數(shù):make、len、cap茸苇、new排苍、append、copy学密、close淘衙、delete、complex腻暮、real彤守、imag、panic哭靖、recover
  • 空白標(biāo)識符:_

關(guān)鍵字

關(guān)鍵字用于特定的語法結(jié)構(gòu)具垫,Go語言定義25關(guān)鍵字:

  • 聲明:import、package
  • 實(shí)體聲明和定義:chan款青、const做修、func、interface抡草、map饰及、struct、type康震、var
  • 流程控制:break燎含、case、continue腿短、default屏箍、defer、else橘忱、fallthrough赴魁、for、go钝诚、goto颖御、if、range凝颇、return潘拱、select、switch

字面量

字面量是值的表示方法拧略,常用與對變量/常量進(jìn)行初始化芦岂,主要分為:

  • 標(biāo)識基礎(chǔ)數(shù)據(jù)類型值的字面量,例如:0, 1.1, true, 3 + 4i, 'a', "我愛中國"

  • 構(gòu)造自定義的復(fù)合數(shù)據(jù)類型的類型字面量垫蛆,例如:type Interval int

  • 用于表示符合數(shù)據(jù)類型值的復(fù)合字面量禽最,用來構(gòu)造array腺怯、slice、map川无、struct的值瓢喉,例如:{1,
    2, 3}

操作符

  • 算術(shù)運(yùn)算符:+、-舀透、*、/决左、%愕够、++、--
  • 關(guān)系運(yùn)算符:>佛猛、>=惑芭、<、<=继找、==遂跟、!=
  • 邏輯運(yùn)算符:&&、||婴渡、!
  • 位運(yùn)算符:&幻锁、|、边臼、<<哄尔、>>、&
  • 賦值運(yùn)算符:=柠并、+=岭接、-=、*=臼予、/=鸣戴、%=、&=粘拾、|=窄锅、^=、<<=半哟、>>=
  • 其他運(yùn)算符:&(單目)酬滤、*(單目)、.(點(diǎn))寓涨、-(單目)盯串、…、<-

分割符

小括號(), 中括號[]戒良,大括號{}体捏,分號;,逗號,

聲明

聲明語句用于定義程序的各種實(shí)體對象,主要有:

  • 聲明變量的var
  • 聲明常量的const
  • 聲明函數(shù)的func
  • 聲明類型的type

變量

變量是指對一塊存儲空間定義名稱几缭,通過名稱對存儲空間的內(nèi)容進(jìn)行訪問或修改河泳,使用var進(jìn)行變量聲明,常用的語法為:

  • var 變量名 變量類型 = 值

定義變量并進(jìn)行初始化年栓,例如:var name string = "silence"

  • var 變量名 變量類型

定義變量使用零值進(jìn)行初始化拆挥,例如:var age int

  • var 變量名 = 值

定義變量,變量類型通過值類型進(jìn)行推導(dǎo)某抓,例如: var isBoy = true

  • var 變量名1, 變量名2 , …, 變量名n 變量類型

定義多個相同類型的變量并使用零值進(jìn)行初始化纸兔,例如:var prefix, suffix string

  • var變量名1, 變量名2 , …, 變量名n 變量類型 = 值1, 值2, …, 值n

定義多個相同類型的變量并使用對應(yīng)的值進(jìn)行初始化,例如:var prev, next int = 3, 4

  • var變量名1, 變量名2 , …, 變量名n = 值1, 值2, …, 值n

定義多個變量并使用對應(yīng)的值進(jìn)行初始化否副,變量的類型使用值類型進(jìn)行推導(dǎo)汉矿,類型可不相同,例如:var name, age = "silence", 30

  • 批量定義

    var (
        變量名1 變量類型1 = 值1
        變量名2 變量類型2 = 值2
    )
    

    定義多個變量并進(jìn)行初始化备禀,變量類型也可省略

    例如:

    var (
        name string = "silence"
        age int = 30
        height = 1.68
    )

初始化表達(dá)式可以使用字面量洲拇、任何表達(dá)式、函數(shù)

02.02.png

簡短聲明

在函數(shù)內(nèi)可以通過簡短聲明語句聲明并初始化變量曲尸,可通過簡短聲明同時聲明和初始化多個變量赋续,需要注意操作符左側(cè)的變量至少有一個未定義過

02.03.png

賦值

可以通過賦值運(yùn)算=更新變量的值,Go語言支持通過元組賦值同時更新多個變量的值队腐,例如:n1, n2 = 1, 2蚕捉,可用于兩個變量的交換x, y = y,x

02.04.png

常量

常量用于定義不可被修改的的值,需要在編譯過程中進(jìn)行計(jì)算柴淘,只能為基礎(chǔ)的數(shù)據(jù)類型布爾迫淹、數(shù)值、字符串为严,使用const進(jìn)行常量聲明敛熬,常用語法:

  • const 常量名 類型 = 值

定義常量并進(jìn)行初始化,例如:const pi float64 = 3.1415926

  • const 常量名 = 值

定義常量第股,類型通過值類型進(jìn)行推導(dǎo)应民,例如:const e = 2.7182818

  • 批量定義

    const (
        常量名1 類型1 = 值1
        常量名2 類型2 = 值2
    )
    

定義多個變量并進(jìn)行初始化,變量類型也可省略夕吻,并且除了第一個常量值外其他常量可同時省略類型和值诲锹,表示使用前一個常量的初始化表達(dá)式

例如:

const (
    name string = "silence"
    age int = 30
)

const (
    name string = "silence"
    desc
)

常量之間的運(yùn)算,類型轉(zhuǎn)換涉馅,以及對常量調(diào)用函數(shù)len归园、cap、real稚矿、imag庸诱、complex捻浦、unsafe.Sizeof得到的結(jié)果依然為常量

02.05.png

作用域

作用域指變量可以使用范圍。go語言使用大括號顯示的標(biāo)識作用域范圍桥爽,大括號內(nèi)包含一連串的語句朱灿,叫做語句塊。語句塊可以嵌套钠四,語句塊內(nèi)定義的變量不能在語句塊外使用

常見隱式語句塊:

  • 全語句塊
  • 包語句塊
  • 文件語句塊
  • if盗扒、switch、for缀去、select环疼、case語句塊

作用域內(nèi)定義變量只能被聲明一次且變量必須使用,否則編譯錯誤朵耕。在不同作用域可定義相同的變量,此時局部將覆蓋全局

02.06.png

注釋

Go支持兩種注釋方式淋叶,行注釋和塊注釋:

  • 行注釋:以//開頭阎曹,例如: //我是行注釋
  • 塊注釋:以/*開頭,以*/結(jié)尾煞檩,例如:/*我是塊注釋*/
02.07.png

問題跟蹤

最基本的問題跟蹤方式為打印日志处嫌,我們可以fmt包中提供的Println、Print斟湃、Printf函數(shù)用于將信息打印到控制臺熏迹,幫助我們進(jìn)行問題調(diào)試,基本使用方法:

02.08.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凝赛,一起剝皮案震驚了整個濱河市注暗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌墓猎,老刑警劉巖捆昏,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異毙沾,居然都是意外死亡骗卜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門左胞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寇仓,“玉大人,你說我怎么就攤上這事烤宙”榉常” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵门烂,是天一觀的道長乳愉。 經(jīng)常有香客問我兄淫,道長,這世上最難降的妖魔是什么蔓姚? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任捕虽,我火速辦了婚禮,結(jié)果婚禮上坡脐,老公的妹妹穿的比我還像新娘泄私。我一直安慰自己,他們只是感情好备闲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布晌端。 她就那樣靜靜地躺著,像睡著了一般恬砂。 火紅的嫁衣襯著肌膚如雪咧纠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天泻骤,我揣著相機(jī)與錄音漆羔,去河邊找鬼。 笑死狱掂,一個胖子當(dāng)著我的面吹牛演痒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播趋惨,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鸟顺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了器虾?” 一聲冷哼從身側(cè)響起讯嫂,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兆沙,沒想到半個月后端姚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挤悉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年渐裸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片装悲。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡昏鹃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诀诊,到底是詐尸還是另有隱情洞渤,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布属瓣,位于F島的核電站载迄,受9級特大地震影響讯柔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜护昧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一魂迄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惋耙,春花似錦捣炬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灭美,卻和暖如春推溃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背届腐。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工美莫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梯捕。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像窝撵,于是被迫代替她去往敵國和親傀顾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容