GO語言中=和:=的區(qū)別說明
錯誤的做法
//聲明變量a var a int //聲明變量a并給變量a賦值 a := 1 //錯誤提示 no new variables on left side of := //說明 重復聲明變量a
聲明不賦值的初始化值
整型和浮點型變量的默認值為 0,如var a int,默認a=0
字符串變量的默認值為空字符串
布爾型變量默認為 bool
切片、函數(shù)、指針變量的默認為 nil
使用編譯器推導類型
var a=10 //默認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重復聲明了,但是conn和conn2沒有重復聲明,只要有一個新聲明,不會報錯
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn2, err := net.Dial("tcp", "127.0.0.1:8080")
錯誤
//重復聲明了
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn, err := net.Dial("tcp", "127.0.0.1:8080")
補充:從go語言中找&和*區(qū)別
*和&的區(qū)別 :
1、& 是取地址符號 , 即取得某個變量的地址 , 如 ; &a
2、*是指針運算符 , 可以表示一個變量是指針類型 , 也可以表示一個指針變量所指向的存儲單元 , 也就是這個地址所存儲的值 .
從代碼中驗證 :
先構建一個Rect類型 :

1. &是取地址符號, 取到Rect類型對象的地址

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

3.*也可以表示指針類型變量所指向的存儲單元 ,也就是這個地址所指向的值

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

摘自其他博客 :
經(jīng)常會見到: p . *p , &p 三個符號
p是一個指針變量的名字,表示此指針變量指向的內存地址,如果使用%p來輸出的話,它將是一個16進制數(shù)。而*p表示此指針指向的內存地址中存放的內容,一般是一個和指針類型一致的變量或者常量。
而我們知道,&是取地址運算符,&p就是取指針p的地址。等會,怎么又來了個地址,它到底和p有什么區(qū)別?
區(qū)別在于,指針p同時也是個變量,既然是變量,編譯器肯定要為其分配內存地址,就像程序中定義了一個int型的變量i,編譯器要為其分配一塊內存空間一樣。
而&p就表示編譯器為變量p分配的內存地址,而因為p是一個指針變量,這種特殊的身份注定了它要指向另外一個內存地址,程序員按照程序的需要讓它指向一個內存地址,這個它指向的內存地址就用p表示。
而且,p指向的地址中的內容就用*p表示。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
golang如何使用gomobile進行Android開發(fā)
golang可以開發(fā)android,使用golang開發(fā)android需要下載安裝gomobile,下面這篇文章主要給大家介紹了關于golang如何使用gomobile進行Android開發(fā)的相關資料,需要的朋友可以參考下2023-01-01
使用Go?goroutine實現(xiàn)并發(fā)的Clock服務
這篇文章主要為大家詳細介紹了如何使用Go?goroutine實現(xiàn)并發(fā)的Clock服務,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-06-06
golang?recover函數(shù)使用中的一些坑解析
這篇文章主要為大家介紹了golang?recover函數(shù)使用中的一些坑解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
Golang處理gRPC請求/響應元數(shù)據(jù)的示例代碼
前段時間實現(xiàn)內部gRPC框架時,為了實現(xiàn)在服務端攔截器中打印請求及響應的頭部信息,便查閱了部分關于元數(shù)據(jù)的資料,因為中文網(wǎng)絡上對于該領域的信息較少,于是在這做了一些簡單的總結,需要的朋友可以參考下2024-03-03

