GO語(yǔ)言中=和:=的區(qū)別說(shuō)明
錯(cuò)誤的做法
//聲明變量a var a int //聲明變量a并給變量a賦值 a := 1 //錯(cuò)誤提示 no new variables on left side of := //說(shuō)明 重復(fù)聲明變量a
聲明不賦值的初始化值
整型和浮點(diǎn)型變量的默認(rèn)值為 0,如var a int,默認(rèn)a=0
字符串變量的默認(rèn)值為空字符串
布爾型變量默認(rèn)為 bool
切片、函數(shù)、指針變量的默認(rèn)為 nil
使用編譯器推導(dǎo)類(lèi)型
var a=10 //默認(rèn)a為整型
特殊例子
正確
var conn net.Conn
var err error
conn, err = net.Dial("tcp", "127.0.0.1:8080")
conn, err = net.Dial("tcp", "127.0.0.1:8080")
正確(特殊)
//雖然err重復(fù)聲明了,但是conn和conn2沒(méi)有重復(fù)聲明,只要有一個(gè)新聲明,不會(huì)報(bào)錯(cuò)
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn2, err := net.Dial("tcp", "127.0.0.1:8080")
錯(cuò)誤
//重復(fù)聲明了
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn, err := net.Dial("tcp", "127.0.0.1:8080")
補(bǔ)充:從go語(yǔ)言中找&和*區(qū)別
*和&的區(qū)別 :
1、& 是取地址符號(hào) , 即取得某個(gè)變量的地址 , 如 ; &a
2、*是指針運(yùn)算符 , 可以表示一個(gè)變量是指針類(lèi)型 , 也可以表示一個(gè)指針變量所指向的存儲(chǔ)單元 , 也就是這個(gè)地址所存儲(chǔ)的值 .
從代碼中驗(yàn)證 :
先構(gòu)建一個(gè)Rect類(lèi)型 :

1. &是取地址符號(hào), 取到Rect類(lèi)型對(duì)象的地址

2. *可以表示一個(gè)變量是指針類(lèi)型(r是一個(gè)指針變量):

3.*也可以表示指針類(lèi)型變量所指向的存儲(chǔ)單元 ,也就是這個(gè)地址所指向的值

4.查看這個(gè)指針變量的地址 , 基本數(shù)據(jù)類(lèi)型直接打印地址

摘自其他博客 :
經(jīng)常會(huì)見(jiàn)到: p . *p , &p 三個(gè)符號(hào)
p是一個(gè)指針變量的名字,表示此指針變量指向的內(nèi)存地址,如果使用%p來(lái)輸出的話(huà),它將是一個(gè)16進(jìn)制數(shù)。而*p表示此指針指向的內(nèi)存地址中存放的內(nèi)容,一般是一個(gè)和指針類(lèi)型一致的變量或者常量。
而我們知道,&是取地址運(yùn)算符,&p就是取指針p的地址。等會(huì),怎么又來(lái)了個(gè)地址,它到底和p有什么區(qū)別?
區(qū)別在于,指針p同時(shí)也是個(gè)變量,既然是變量,編譯器肯定要為其分配內(nèi)存地址,就像程序中定義了一個(gè)int型的變量i,編譯器要為其分配一塊內(nèi)存空間一樣。
而&p就表示編譯器為變量p分配的內(nèi)存地址,而因?yàn)閜是一個(gè)指針變量,這種特殊的身份注定了它要指向另外一個(gè)內(nèi)存地址,程序員按照程序的需要讓它指向一個(gè)內(nèi)存地址,這個(gè)它指向的內(nèi)存地址就用p表示。
而且,p指向的地址中的內(nèi)容就用*p表示。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
golang如何使用gomobile進(jìn)行Android開(kāi)發(fā)
golang可以開(kāi)發(fā)android,使用golang開(kāi)發(fā)android需要下載安裝gomobile,下面這篇文章主要給大家介紹了關(guān)于golang如何使用gomobile進(jìn)行Android開(kāi)發(fā)的相關(guān)資料,需要的朋友可以參考下2023-01-01
詳解Go語(yǔ)言中select語(yǔ)句的常見(jiàn)用法
這篇文章主要是來(lái)和大家介紹一下Go語(yǔ)言中select?語(yǔ)句的常見(jiàn)用法,以及在使用過(guò)程中的注意事項(xiàng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-07-07
淺析Go語(yǔ)言容器之?dāng)?shù)組和切片的使用
在?Java?的核心庫(kù)中,集合框架可謂鼎鼎大名:Array?、List、Set等等,隨便拎一個(gè)出來(lái)都值得開(kāi)發(fā)者好好學(xué)習(xí)如何使用甚至是背后的設(shè)計(jì)源碼。雖然Go語(yǔ)言沒(méi)有如此豐富的容器類(lèi)型,但也有一些基本的容器供開(kāi)發(fā)者使用,接下來(lái)讓我們認(rèn)識(shí)一下這些容器類(lèi)型吧2022-11-11
使用Go?goroutine實(shí)現(xiàn)并發(fā)的Clock服務(wù)
這篇文章主要為大家詳細(xì)介紹了如何使用Go?goroutine實(shí)現(xiàn)并發(fā)的Clock服務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06
golang?recover函數(shù)使用中的一些坑解析
這篇文章主要為大家介紹了golang?recover函數(shù)使用中的一些坑解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
解決Go語(yǔ)言數(shù)據(jù)庫(kù)中null值的問(wèn)題
這篇文章主要介紹了解決Go語(yǔ)言數(shù)據(jù)庫(kù)中null值的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
Golang處理gRPC請(qǐng)求/響應(yīng)元數(shù)據(jù)的示例代碼
前段時(shí)間實(shí)現(xiàn)內(nèi)部gRPC框架時(shí),為了實(shí)現(xiàn)在服務(wù)端攔截器中打印請(qǐng)求及響應(yīng)的頭部信息,便查閱了部分關(guān)于元數(shù)據(jù)的資料,因?yàn)橹形木W(wǎng)絡(luò)上對(duì)于該領(lǐng)域的信息較少,于是在這做了一些簡(jiǎn)單的總結(jié),需要的朋友可以參考下2024-03-03

