真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言原始指針 go語言指針和c指針區(qū)別

Go語言基礎(chǔ)語法(一)

本文介紹一些Go語言的基礎(chǔ)語法。

站在用戶的角度思考問題,與客戶深入溝通,找到橫山網(wǎng)站設(shè)計(jì)與橫山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋橫山地區(qū)。

先來看一個(gè)簡(jiǎn)單的go語言代碼:

go語言的注釋方法:

代碼執(zhí)行結(jié)果:

下面來進(jìn)一步介紹go的基礎(chǔ)語法。

go語言中格式化輸出可以使用 fmt 和 log 這兩個(gè)標(biāo)準(zhǔn)庫(kù),

常用方法:

示例代碼:

執(zhí)行結(jié)果:

更多格式化方法可以訪問中的fmt包。

log包實(shí)現(xiàn)了簡(jiǎn)單的日志服務(wù),也提供了一些格式化輸出的方法。

執(zhí)行結(jié)果:

下面來介紹一下go的數(shù)據(jù)類型

下表列出了go語言的數(shù)據(jù)類型:

int、float、bool、string、數(shù)組和struct屬于值類型,這些類型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類型,存儲(chǔ)的是一個(gè)地址,這個(gè)地址存儲(chǔ)最終的值。

常量是在程序編譯時(shí)就確定下來的值,程序運(yùn)行時(shí)無法改變。

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

Go 語言的運(yùn)算符主要包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符以及指針相關(guān)運(yùn)算符。

算術(shù)運(yùn)算符:

關(guān)系運(yùn)算符:

邏輯運(yùn)算符:

位運(yùn)算符:

賦值運(yùn)算符:

指針相關(guān)運(yùn)算符:

下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯(lián)用,這里不做介紹。

if語法格式如下:

if ... else :

else if:

示例代碼:

語法格式:

另外,添加 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語句,不管下一條case語句是否為true。

示例代碼:

執(zhí)行結(jié)果:

下面介紹幾種循環(huán)語句:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

也可以通過標(biāo)記退出循環(huán):

--THE END--

【Go參數(shù)傳遞:值類型、引用類型和指針類型】

修改參數(shù)

值類型

指針類型

引用類型

chan

類型零值

總結(jié) :在Go語言中, 函數(shù)的參數(shù)傳遞只有值傳遞 ,而且傳遞的實(shí)參都是原始數(shù)據(jù)的一份拷貝。如果拷貝的內(nèi)容是值類型的,那么在函數(shù)中無法修改原始數(shù)據(jù),如果拷貝的內(nèi)容是指針(或者可以理解為引用類型),那么可以在函數(shù)中修改原始數(shù)據(jù)。

GO 一文搞懂指針和地址值的區(qū)別

go語言中的指針和地址值,在使用上常常具有迷惑性,主要是其特殊的*、符號(hào)的使用,可能會(huì)讓你摸不透,本文希望能講清楚go語言的指針(pointer)和值(value)。

這里先簡(jiǎn)單的對(duì)指針和地址值概念做一個(gè)定義:

這是因?yàn)間o方法傳遞參數(shù)的方式導(dǎo)致的,go方法函數(shù)傳遞參數(shù)傳遞的是一個(gè)拷貝,看看下面的程序會(huì)輸出什么?

答案是8,而不是9,因?yàn)锳ddAge函數(shù)修改的是學(xué)生的一個(gè)備份,而不是原始的學(xué)生對(duì)象

如果你想正確的給學(xué)生年齡增加的話,函數(shù)傳遞的需要是這個(gè)值的指針,如下所示:

需要注意的是,這里我們的指針傳遞的仍然是一個(gè)拷貝,比如,如果你將s賦值給另外一個(gè)指針地址,不會(huì)影響原有的指針,這點(diǎn)可以自行實(shí)踐下。

那在使用go語言開發(fā)的時(shí)候,何時(shí)該用指針何時(shí)改用地址值呢?比如考慮以下場(chǎng)景:

簡(jiǎn)單原則: 當(dāng)你不確定該使用哪種的時(shí)候,優(yōu)先使用指針

如果考慮在數(shù)組、切片、map等復(fù)合對(duì)象中使用指針和值,比如:

很多開發(fā)者會(huì)認(rèn)為b會(huì)更高效,但是被傳遞的都是一個(gè)切片的拷貝,切片本身就是一個(gè)引用,所以這里被傳遞的其實(shí)沒有什么區(qū)別。

對(duì)于指針和地址值的使用,大家需要牢記的一點(diǎn)就是go數(shù)據(jù)傳遞的不可變性,活學(xué)活用此特點(diǎn),在無狀態(tài)函數(shù)中此特性非常有用。

go語言中指針的使用場(chǎng)景?

如果該函數(shù)會(huì)修改receiver,此時(shí)一定要用指針

如果receiver是 struct 并且包含互斥類型 sync.Mutex ,或者是類似的同步變量,receiver必須是指針,這樣可以避免對(duì)象拷貝

如果receiver是較大的 struct 或者 array ,使用指針則更加高效。多大才算大?假設(shè)struct內(nèi)所有成員都要作為函數(shù)變量傳進(jìn)去,如果覺得這時(shí)數(shù)據(jù)太多,就是struct太大

如果receiver是 struct , array 或者 slice ,并且其中某個(gè)element指向了某個(gè)可變量,則這個(gè)時(shí)候receiver選指針會(huì)使代碼的意圖更加明顯

如果receiver使較小的 struct 或者 array ,并且其變量都是些不變量、常量,例如 time.Time ,value receiver更加適合,因?yàn)関alue receiver可以減少需要回收的垃圾量。


文章名稱:go語言原始指針 go語言指針和c指針區(qū)別
網(wǎng)站路徑:http://weahome.cn/article/doijoed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部