tips: *號,可以指向指針類型內(nèi)存地址上的值,號,可以獲取值類型的內(nèi)存地址
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、臺安網(wǎng)站維護(hù)、網(wǎng)站推廣。
每一個變量都有內(nèi)存地址,可以通過變量來操作內(nèi)存地址中的值,即內(nèi)存的大小
go語言中獲取變量的內(nèi)存地址方法:通過 符號可以獲取變量的地址
定義:普通變量存儲的是對應(yīng)類型的值,這些類型就叫值類型
變量b,在內(nèi)存中的地址為:0x1040a124,在這個內(nèi)存地址上存儲的值為:156
定義:指針類型的變量存儲的是?個地址,所以?叫指針類型或引?類型
b 是值類型,它指向的是內(nèi)存地址上的值
a是指針類型,它指向的是b的內(nèi)存地址
指針類型定義,語法: var 變量名 *類型
指針類型在定義完成后,默認(rèn)為空地址,即空指針(nil)
在定義好指針變量后,可以通過***** 符號可以獲取指針變量指向的變量
在這里的 *a 等價于 b,通過修改 *a ,最終修改的是值類型b的值
這里a,d是值類型,b,c是指針類型
d就相當(dāng)于把a(bǔ)內(nèi)存地址上值,在內(nèi)存中從新開辟了一塊空間存儲,d和a互不影響
b,c相當(dāng)于指向了a的內(nèi)存地址,當(dāng)使用*號引用出內(nèi)存地址上的變量上,修改值得,a的值也會跟著改變
指針,或者說pointer是一串指向某個內(nèi)存地址的字符串,所謂指向是指這串字符串的內(nèi)容是內(nèi)存地址的值
表示取地址,例如你有一個變量a那么a就是變量a在內(nèi)存中的地址,對于golang,指針也是有類型的,比如如果a是一個string那么a是一個string的指針類型,在go里面叫string
所以你看到b := a,a,b是兩個不同的變量,a是string類型,b是string類型,你用fmt去打印b,你會發(fā)現(xiàn)它是一串內(nèi)存地址,而非a的值
所以為了拿到a的值,有個操作*,用來取出指針對應(yīng)內(nèi)存地址里存的值,所以當(dāng)你fmt打印一下*b它會跟a一模一樣
本文介紹一些Go語言的基礎(chǔ)語法。
先來看一個簡單的go語言代碼:
go語言的注釋方法:
代碼執(zhí)行結(jié)果:
下面來進(jìn)一步介紹go的基礎(chǔ)語法。
go語言中格式化輸出可以使用 fmt 和 log 這兩個標(biāo)準(zhǔn)庫,
常用方法:
示例代碼:
執(zhí)行結(jié)果:
更多格式化方法可以訪問中的fmt包。
log包實現(xiàn)了簡單的日志服務(wù),也提供了一些格式化輸出的方法。
執(zhí)行結(jié)果:
下面來介紹一下go的數(shù)據(jù)類型
下表列出了go語言的數(shù)據(jù)類型:
int、float、bool、string、數(shù)組和struct屬于值類型,這些類型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類型,存儲的是一個地址,這個地址存儲最終的值。
常量是在程序編譯時就確定下來的值,程序運行時無法改變。
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
Go 語言的運算符主要包括算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符、賦值運算符以及指針相關(guān)運算符。
算術(shù)運算符:
關(guān)系運算符:
邏輯運算符:
位運算符:
賦值運算符:
指針相關(guān)運算符:
下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯(lián)用,這里不做介紹。
if語法格式如下:
if ... else :
else if:
示例代碼:
語法格式:
另外,添加 fallthrough 會強(qiáng)制執(zhí)行后面的 case 語句,不管下一條case語句是否為true。
示例代碼:
執(zhí)行結(jié)果:
下面介紹幾種循環(huán)語句:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
也可以通過標(biāo)記退出循環(huán):
--THE END--
1、基本數(shù)據(jù)類型
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for int8
rune // alias for int32,represents a Unicode code point
float32 float64
complex64 complex128
常量定義
2、類型轉(zhuǎn)換
(1)Go語言不允許隱式類型轉(zhuǎn)換(不支持小位數(shù)類型向大位數(shù)類型轉(zhuǎn))
(2)別名和原有類型也不能進(jìn)行隱式類型轉(zhuǎn)換(type MyInt int64 = int64)
3、類型的預(yù)定義值
1.math.MaxInt64
2.math.MaxFloat64
3.math.MaxUInt32
4、指針類型
(1)不支持指針運算
(2)string是值類型,其默認(rèn)的初始化值為空字符串,而不是nil
5、算術(shù)運算符
+ - * / % ++ --(不支持前置++ --)
6、比較運算符
#== != = =
(1)比較數(shù)組
相同維數(shù)且含有形同個數(shù)元素的數(shù)組才可以比較
每個元素都相同的才相等
7、位運算符
| ^
^ (按位置零) a (^b)
1 ^ 0 1
1 ^ 1 0
0 ^ 1 0
0 ^ 0 0
8、條件與循環(huán)
(1)循環(huán)
Go 語?僅?持循環(huán)關(guān)鍵字 for
(2)條件
9、數(shù)組和切片
數(shù)組截取,索引下標(biāo)從0開始計數(shù)
a[開始索引(包含), 結(jié)束索引(不包含)]
a := [...]int{1, 2, 3, 4, 5}
a[1:2] //2
a[1:3] //2,3
a[1:len(a)] //2,3,4,5
a[1:] //2,3,4,5
a[:3] //1,2,3
切片內(nèi)部結(jié)構(gòu)
9、Map
9、字符串
Unicode UTF8
常?字符串函數(shù)
當(dāng)前文章:go語言指針運算符 go 指針方法
URL分享:http://www.rwnh.cn/article2/dosiiic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、定制網(wǎng)站、電子商務(wù)、網(wǎng)站排名、關(guān)鍵詞優(yōu)化、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)