亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go語言為什么不支持前綴自增運算符原理解析

 更新時間:2023年08月07日 09:16:24   作者:煎魚  
這篇文章主要為大家介紹了Go語言為什么不支持前綴自增運算符原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

習慣性對比,類比學習,是大家掌握新技能時會習慣性的關(guān)聯(lián)操作。像 Go 這種比較有味道的編程語言,其有一個細節(jié)也是大家很好奇的。

其實 Go 只支持后自增/自減,今天煎魚和大家一起研究為什么。

語法

基本的 Go 自增,非常簡單。直接見代碼:

a := 1
a++
fmt.Println(a)

輸出結(jié)果:

2

如果回答輸出結(jié)果錯了,建議右拐語法了。接下來看看其他幾個例子,與你預(yù)想的運行結(jié)果是否一致。

例子 1,代碼如下:

func main() {
    a := 1
    b := a++
    fmt.Println(b)
}

輸出的結(jié)果:

# command-line-arguments
./main.go:9:8: syntax error: unexpected ++ at end of statement

例子 2,代碼如下:

func main() {
    a := 1
    ++a
    fmt.Println(a)
}

輸出的結(jié)果:

# command-line-arguments
./main.go:9:2: syntax error: unexpected ++, expecting }

你會發(fā)現(xiàn)這兩個例子,在其他常見語言中都是正常的。但在 Go 中竟然會運行錯誤?

原因

Go 在設(shè)計上:

  • 沒有支持前綴自增自減的運算語句,也就是不允許 ++a。
  • 運算符 ++ 和 -- 只能作為一個語句來使用,不可以作為表達式被賦值給其它的變量使用。

參照以下例子:

  • 在語句中,++ 是可以的。
  • 在賦值 = 中 ++ 是不可以。

那為什么就不支持了呢?本質(zhì)上 Go 的設(shè)計者是為了讓代碼擁有更好的可讀性,也不需要糾結(jié)求值順序了。

單從程序上來看,區(qū)分前綴自增,還是后綴自增,運行結(jié)果上都是一樣的。但一旦引入,會加大程序員的犯錯可能性,經(jīng)常會有人混淆,偶爾還會有人搞成面試題來考考應(yīng)聘者。

顯然,不支持前綴和賦值,++、-- 僅作為一個語句能夠在 Go 代碼上起到可讀性提高的作用,簡化意義重大。

總結(jié)

今天這篇文章,我們針對 Go 語法設(shè)計中的 ++、-- 這個細節(jié)進行了摸索和討論。實際上 a++,還是 --a,又或是更加復(fù)雜的混合表達式,更多的只能在面試或編寫時迷惑后來的小伙伴。

在 Go 工程化的道路上并不能帶來過多的收益,所以自然也就被拿掉了。

你有沒有試過被各種奇怪的前綴、后綴、混合迷惑過呢?

以上就是Go語言為什么不支持前綴自增運算符原理解析的詳細內(nèi)容,更多關(guān)于Go不支持前綴自增運算符的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • uber go zap 日志框架支持異步日志輸出

    uber go zap 日志框架支持異步日志輸出

    這篇文章主要為大家介紹了uber go zap 日志框架支持異步日志輸出示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • golang通過context控制并發(fā)的應(yīng)用場景實現(xiàn)

    golang通過context控制并發(fā)的應(yīng)用場景實現(xiàn)

    這篇文章主要介紹了golang通過context控制并發(fā)的應(yīng)用場景實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • Go設(shè)計模式之狀態(tài)模式講解和代碼示例

    Go設(shè)計模式之狀態(tài)模式講解和代碼示例

    狀態(tài)是一種行為設(shè)計模式,?讓你能在一個對象的內(nèi)部狀態(tài)變化時改變其行為,該模式將與狀態(tài)相關(guān)的行為抽取到獨立的狀態(tài)類中,?讓原對象將工作委派給這些類的實例,?而不是自行進行處理,本文將通過代碼示例給大家簡單的介紹一下Go狀態(tài)模式
    2023-08-08
  • go-spew調(diào)試利器詳解

    go-spew調(diào)試利器詳解

    這篇文章主要介紹了調(diào)試利器?go-spew,go-spew?可以以一種非常友好的方式輸出完整的數(shù)據(jù)結(jié)構(gòu)信息,go-spew?支持一些自定義配置,可以通過?spew.Config?修改,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Go語言七篇入門教程六網(wǎng)絡(luò)編程

    Go語言七篇入門教程六網(wǎng)絡(luò)編程

    這篇文章主要為大家介紹了Go語言的網(wǎng)絡(luò)編程,其中包含了Socket編程,Http編程以及RPC編程,本篇文章是Go語言七篇入門系列文章,有需要的朋友可以借鑒下
    2021-11-11
  • Golang排列組合算法問題之全排列實現(xiàn)方法

    Golang排列組合算法問題之全排列實現(xiàn)方法

    這篇文章主要介紹了Golang排列組合算法問題之全排列實現(xiàn)方法,涉及Go語言針對字符串的遍歷及排列組合相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • Go?Fiber快速搭建一個HTTP服務(wù)器

    Go?Fiber快速搭建一個HTTP服務(wù)器

    Fiber?是一個?Express?啟發(fā)?web?框架基于?fasthttp?,最快?Go?的?http?引擎,這篇文章主要介紹了Go?Fiber快速搭建一個HTTP服務(wù)器,需要的朋友可以參考下
    2023-06-06
  • Ubuntu安裝Go語言運行環(huán)境

    Ubuntu安裝Go語言運行環(huán)境

    由于最近偏愛Ubuntu,在加上作為一門開源語言,在Linux上從源代碼開始搭建環(huán)境更讓人覺得有趣味性。讓我們直接先從Go語言的環(huán)境搭建開始
    2015-04-04
  • golang實現(xiàn)圖像驗證碼的示例代碼

    golang實現(xiàn)圖像驗證碼的示例代碼

    這篇文章主要為大家詳細介紹了如何利用golang實現(xiàn)簡單的圖像驗證碼,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • 詳解Go語言的計時器

    詳解Go語言的計時器

    Go語言的標準庫里提供兩種類型的計時器Timer和Ticker。這篇文章主要介紹了Go語言的計時器的相關(guān)知識,需要的朋友可以參考下
    2020-05-05

最新評論