go語(yǔ)言的變量定義示例詳解
前言
特別說(shuō)明: 本文只適合新手學(xué)習(xí)
這篇文章帶我們?nèi)腴T(mén)go語(yǔ)言的定義變量的方式,其實(shí)和javascript很相似,所以特意總結(jié)在此。
在go語(yǔ)言中,也有變量和常量?jī)煞N,首先我們來(lái)看變量的定義,定義變量我們分為定義單個(gè)變量和多個(gè)變量。
本文知識(shí)點(diǎn)總結(jié)如下圖所示:

定義單個(gè)變量
在定義單個(gè)變量中,我們通過(guò)var關(guān)鍵字來(lái)定義一個(gè)變量,其后跟變量名和變量類(lèi)型,其中變量類(lèi)型可以省略,語(yǔ)法結(jié)構(gòu)如下:
var <變量名> <變量類(lèi)型>
例如:
var name string
以上代碼表示定義一個(gè)變量名為name,變量類(lèi)型為字符串的變量,注意go語(yǔ)言定義變量的類(lèi)型始終是在最后。
可以看到,和js定義變量區(qū)別不大,只不過(guò)是多了一個(gè)類(lèi)型聲明,其中這個(gè)類(lèi)型聲明還可以省略。
定義多個(gè)變量
在go語(yǔ)言中,我們通過(guò),操作符來(lái)定義多個(gè)變量,這里定義多個(gè)變量也分為兩種情況,一種是多個(gè)變量都是同一類(lèi)型,另外一種則是不同類(lèi)型的多個(gè)變量,我們先來(lái)看第一種。
定義相同類(lèi)型的多個(gè)變量
和定義單個(gè)變量一樣,也是使用var關(guān)鍵字來(lái)定義,并且通過(guò),來(lái)分隔,語(yǔ)法結(jié)構(gòu)如下:
var <變量名1>,<變量名2>,<變量名3>,... <變量類(lèi)型>
如:
var name1,name2,name3 string
以上定義了name1,name2,name3 3個(gè)變量,變量的類(lèi)型都是string。
可以看到以上是定義相同類(lèi)型的多個(gè)變量,那么我們應(yīng)該如何定義不同類(lèi)型的多個(gè)變量呢?
很簡(jiǎn)單,用()包裹起來(lái),然后也是使用,分隔,在每個(gè)變量名后面緊跟變量類(lèi)型即可,語(yǔ)法如下:
var (<變量名1> <變量1類(lèi)型>,<變量名2> <變量2類(lèi)型>...)
例如以下代碼:
var (name string,age int)
是不是很簡(jiǎn)單?
變量的初始化
在go語(yǔ)言中,定義了變量,同樣也會(huì)有初始化的操作,也就是說(shuō)給變量初始化值,也是通過(guò)=操作符后跟值即可。語(yǔ)法結(jié)構(gòu)如下:
var <變量名> <變量類(lèi)型>? = <變量值>
例如:
var name string = "eveningwater"
變量類(lèi)型的省略
其實(shí)我們?cè)诔跏蓟兞康臅r(shí)候可以省略變量類(lèi)型,然后go編譯器會(huì)在編譯的時(shí)候幫我們自動(dòng)推導(dǎo)變量類(lèi)型,這簡(jiǎn)直就是在寫(xiě)javascript啊,這也是我在以上語(yǔ)法變量類(lèi)型那一塊中標(biāo)注?的原因,就表示可以寫(xiě)可以不寫(xiě)。例如以上示例代碼就可以寫(xiě)成:
var name = "eveningwater"
如此看來(lái),我們定義多個(gè)變量同樣也可以省略變量類(lèi)型,如:
var (name,age) = "eveningwater",26
又或者是:
var name1,name2 = "eveningwater","xxx"
var關(guān)鍵字的省略(簡(jiǎn)短聲明)
go語(yǔ)言的定義變量名的關(guān)鍵字var也可以省略,這也是我沒(méi)有想到的,如下所示:
name1,name2 := "eveningwater","xxx"
感覺(jué)挺神奇的,是吧!go把這種省略了var和type的聲明叫做簡(jiǎn)短申明。這樣一來(lái)我們就可以在定義變量的時(shí)候用這個(gè)":="來(lái)定義變量了,不,你想多了,使用這種方式來(lái)定義變量是有限制的,那就是這種方式只能夠作用在函數(shù)內(nèi)部,如果我們要定義全局變量的話,還是要老老實(shí)實(shí)的寫(xiě)var關(guān)鍵字。
全局變量與局部變量
通過(guò)以上的說(shuō)明,我們知道了定義全局變量和定義局部變量的方式,如下:
var a string = "hello" //全局變量
func test() {
b := " world" //局部變量
c := a + b
fmt.Printf("%s \n", c)
}特別的變量名
go語(yǔ)言有個(gè)很特殊的變量名,那就是下劃線"_",為什么說(shuō)它特殊呢,因?yàn)槎x它的值都會(huì)被丟棄,沒(méi)錯(cuò),就是丟棄,例如:
_,num = 35,34
其中_變量值為35將會(huì)被丟棄,最后就只剩下值為34的num變量了,感覺(jué)這種設(shè)計(jì)也是挺有意思的。
未使用變量的限制
go語(yǔ)言在編譯階段會(huì)對(duì)聲明但未使用變量報(bào)錯(cuò),比如以下代碼就會(huì)報(bào)錯(cuò): 聲明了i變量但并未使用。
package main
func main(){
//編譯階段報(bào)錯(cuò)
var i int
}常量
常量其實(shí)也就是在程序編譯階段定下來(lái)的值嗎,無(wú)法被修改,在go語(yǔ)言中常量也可以被定義成數(shù)值,布爾值或者是字符串等類(lèi)型。它的語(yǔ)法結(jié)構(gòu)如下:
const variableName = value;
例如:
const num int = 10;
其中常量的類(lèi)型如果需要也可以加上。
以上就是本文內(nèi)容了,感謝大家觀看,看完本文,想來(lái)應(yīng)該要不了幾分鐘,幾分鐘就掌握了go語(yǔ)言定義變量的概念和方式,想來(lái)還是值得的,非常適合新手學(xué)習(xí)
以上就是go語(yǔ)言的變量定義示例詳解的詳細(xì)內(nèi)容,更多關(guān)于go語(yǔ)言變量定義的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
聊聊Go語(yǔ)言編譯github上的項(xiàng)目遇到的坑
這篇文章主要介紹了解決Go語(yǔ)言編譯github上的項(xiàng)目遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
Go存儲(chǔ)基礎(chǔ)使用direct io方法實(shí)例
這篇文章主要介紹了Go存儲(chǔ)基礎(chǔ)之如何使用direct io方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
go-zero創(chuàng)建RESTful API 服務(wù)的方法
文章介紹了如何使用go-zero框架和goctl工具快速創(chuàng)建RESTfulAPI服務(wù),通過(guò)定義.api文件并使用goctl命令,可以自動(dòng)生成項(xiàng)目結(jié)構(gòu)、路由、請(qǐng)求和響應(yīng)模型以及處理邏輯,感興趣的朋友一起看看吧2024-11-11
golang的httpserver優(yōu)雅重啟方法詳解
這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03
Go語(yǔ)言Zap庫(kù)Logger的定制化和封裝使用詳解
這篇文章主要介紹了Go語(yǔ)言Zap庫(kù)Logger的定制化和封裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
使用Go語(yǔ)言實(shí)現(xiàn)接口繼承的方式
在Go語(yǔ)言中,接口(interface)是一種定義方法集合的類(lèi)型,它并不包含方法的具體實(shí)現(xiàn),只是規(guī)定實(shí)現(xiàn)該接口的類(lèi)型必須提供這些方法的實(shí)現(xiàn),下面我將通過(guò)示例代碼來(lái)詳細(xì)解釋如何使用Go語(yǔ)言實(shí)現(xiàn)接口組合,以及為什么這種方式可以看作是實(shí)現(xiàn)接口繼承的一種方式2024-05-05

