AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

使用 Rust 后,我寫 Go 的方法都變了!

來源: 責(zé)編: 時(shí)間:2024-01-18 17:33:01 254觀看
導(dǎo)讀大家好,我是漁夫。今天跟大家分享,當(dāng)使用 Rust 一段時(shí)間后回來寫 Go 的有哪些變化。自己本身大部分工作上都是主要寫 Go 的,因?yàn)轫?xiàng)目原因,以及我自己本身對(duì) Rust 的熱愛,業(yè)余時(shí)間也喜歡寫各種小工具等等,所以,也越來越習(xí)慣 R

大家好,我是漁夫。aOI28資訊網(wǎng)——每日最新資訊28at.com

今天跟大家分享,當(dāng)使用 Rust 一段時(shí)間后回來寫 Go 的有哪些變化。自己本身大部分工作上都是主要寫 Go 的,因?yàn)轫?xiàng)目原因,以及我自己本身對(duì) Rust 的熱愛,業(yè)余時(shí)間也喜歡寫各種小工具等等,所以,也越來越習(xí)慣 Rust 的寫法。aOI28資訊網(wǎng)——每日最新資訊28at.com

aOI28資訊網(wǎng)——每日最新資訊28at.com

錯(cuò)誤處理

以為我擺脫了 if err != nil { },在 Rust 中,很有可能會(huì)寫出類似 let result = some_function(),然后使用 match 或 ? 操作符來處理 Result。習(xí)慣使用 Rust 的寫法使用 ?, 模式匹配來處理錯(cuò)誤情況,用起來還是有點(diǎn)舒服滴。aOI28資訊網(wǎng)——每日最新資訊28at.com

let result = some_function()?;

而 Go 呢,使用多返回值來處理錯(cuò)誤,通常是返回一個(gè)結(jié)果和一個(gè)錯(cuò)誤。aOI28資訊網(wǎng)——每日最新資訊28at.com

result, err := someFunction()if err != nil {    // handle error}

Rust 錯(cuò)誤處理還是吸引很多開發(fā)者的,很多其他語言開發(fā)者,抱怨要是錯(cuò)誤處理像 Rust 那種多爽,Rust 的錯(cuò)誤處理機(jī)制也吸收了其他編程語言中錯(cuò)誤處理的優(yōu)點(diǎn),并結(jié)合了 Rust 獨(dú)特的語言特性,如強(qiáng)類型系統(tǒng)、模式匹配和所有權(quán)模型,形成了一套高效、安全且易于使用的錯(cuò)誤處理機(jī)制。aOI28資訊網(wǎng)——每日最新資訊28at.com

可以簡(jiǎn)單了解 Rust 錯(cuò)誤處理與其他語言的不同:aOI28資訊網(wǎng)——每日最新資訊28at.com

  • 模式匹配與強(qiáng)類型系統(tǒng)(類似于 Haskell)
  • 無異常設(shè)計(jì)(類似于 Go)
  • 顯式錯(cuò)誤傳播(類似于 C++的 RAII)
  • 可選值的處理(類似于 Swift 和 Kotlin),Rust 的 Option 類型類似于 Swift 的可選值(Optional)和 Kotlin 的可空類型(Nullable Type),用于處理可能為空的情況,這使得處理這類值更加安全和直觀。

容易把 … := 打成 let … =

有時(shí)候不自覺地將 Rust 的編程習(xí)慣和風(fēng)格帶入 Go 的編程中,使用 let 關(guān)鍵字代替 := , 在 Rust 中,變量通常是使用 let 關(guān)鍵字來聲明的。如:let x = 5。而在 Go 中,變量聲明和初始化通常使用 := 符號(hào),也很容易把錯(cuò)誤地在 Go 中使用如 let x := 5,而正確的方式是 x := 5。aOI28資訊網(wǎng)——每日最新資訊28at.com

容易寫循環(huán)時(shí)把 := range … 打成 in …

Rust 程序員在編寫 Go 代碼時(shí),也很容易在循環(huán)結(jié)構(gòu)中不自覺地將 Go 的 := range 語法寫成 Rust 風(fēng)格的 in。aOI28資訊網(wǎng)——每日最新資訊28at.com

Rust :aOI28資訊網(wǎng)——每日最新資訊28at.com

let numbers = vec![1, 2, 3, 4, 5];for num in numbers {    println!("{}", num);}

Go :aOI28資訊網(wǎng)——每日最新資訊28at.com

numbers := []int{1, 2, 3, 4, 5}for index, value := range numbers {    fmt.Println(index, value)}

函數(shù)定義關(guān)鍵字,容易把 func 寫成 fn

習(xí)慣了 Rust 后,切到寫 Go 代碼時(shí),可能會(huì)錯(cuò)誤地使用 fn 來定義函數(shù),也會(huì)習(xí)慣性的寫錯(cuò)。aOI28資訊網(wǎng)——每日最新資訊28at.com

Rust 的寫法:aOI28資訊網(wǎng)——每日最新資訊28at.com

fn add(a: i32, b: i32) -> i32 {    a + b}

Go 的寫法:aOI28資訊網(wǎng)——每日最新資訊28at.com

func add(a int, b int) int {    return a + b}

函數(shù)返回類型前,習(xí)慣加 ->

在 Rust 中,函數(shù)定義時(shí),返回類型是通過 -> 符號(hào)指定的,緊跟在參數(shù)列表后面。aOI28資訊網(wǎng)——每日最新資訊28at.com

總是忘記 return

習(xí)慣性在函數(shù)中漏寫 return 語句,在 Rust 中,函數(shù)的最后一個(gè)表達(dá)式會(huì)自動(dòng)作為函數(shù)的返回值,除非它以分號(hào)結(jié)尾。因此,在 Rust 中編寫函數(shù)時(shí),經(jīng)常省略 return 關(guān)鍵字。aOI28資訊網(wǎng)——每日最新資訊28at.com

Rust 如下例子:aOI28資訊網(wǎng)——每日最新資訊28at.com

fn add(a: i32, b: i32) -> i32 {    a + b  // 這個(gè)自動(dòng)返回 a + b 的結(jié)果}

Go 例子:aOI28資訊網(wǎng)——每日最新資訊28at.com

必須顯式使用 returnaOI28資訊網(wǎng)——每日最新資訊28at.com

func add(a int, b int) int {    return a + b}

習(xí)慣使用劃線命名

在 Rust 開發(fā)中,標(biāo)準(zhǔn)的變量和函數(shù)命名約定是使用下劃線分隔的小寫字母的,即所謂的 snake_case。aOI28資訊網(wǎng)——每日最新資訊28at.com

Rust:aOI28資訊網(wǎng)——每日最新資訊28at.com

fn demo_function() {    let local_variable = 100;}

Go:aOI28資訊網(wǎng)——每日最新資訊28at.com

func DemoFunction() {    localVariable := 100}

注意,Go 的首字母大小寫是有不同含義的。aOI28資訊網(wǎng)——每日最新資訊28at.com

好了,以上主要是分享當(dāng)寫 Rust 后,切到其他語言時(shí),通常習(xí)慣性使用 Rust 的寫法風(fēng)格。當(dāng)然有些沒有想到的,以上的習(xí)慣性,那種是你習(xí)慣性指數(shù)比較高的呢。學(xué)習(xí) Rust 建議初學(xué)者要適應(yīng)編譯告警一堆,還有跟編輯器做斗爭(zhēng)。aOI28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-64498-0.html使用 Rust 后,我寫 Go 的方法都變了!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Galaxy AI 賦能影像創(chuàng)作 三星 Galaxy S24 系列解鎖進(jìn)階體驗(yàn)

下一篇: 2024 年 Vue.js 會(huì)發(fā)生什么?

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 28個(gè)SpringBoot項(xiàng)目中常用注解,日常開發(fā)、求職面試不再懵圈

    前言在使用SpringBoot開發(fā)中或者在求職面試中都會(huì)使用到很多注解或者問到注解相關(guān)的知識(shí)。本文主要對(duì)一些常用的注解進(jìn)行了總結(jié),同時(shí)也會(huì)舉出具體例子,供大家學(xué)習(xí)和參考。注解
  • 企業(yè)采用CRM系統(tǒng)的11個(gè)好處

    客戶關(guān)系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動(dòng),以改善客戶體驗(yàn)和滿意度。  CRM軟件市場(chǎng)規(guī)模如今超過580
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 猿輔導(dǎo)與新東方的兩種“歸途”

    作者|卓心月 出品|零態(tài)LT(ID:LingTai_LT)如何成為一家偉大企業(yè)?答案一定是對(duì)“勢(shì)”的把握,這其中最關(guān)鍵的當(dāng)屬對(duì)企業(yè)戰(zhàn)略的制定,且能夠站在未來看現(xiàn)在,即使這其中的
  • 品牌洞察丨服務(wù)本地,美團(tuán)直播成效幾何?

    來源:17PR7月11日,美團(tuán)App首頁推薦位出現(xiàn)“美團(tuán)直播”的固定入口。在直播聚合頁面,外賣“神槍手”直播間、美團(tuán)旅行直播間、美團(tuán)買菜直播間等均已上線,同時(shí)
  • 馮提莫簽約抖音公會(huì) 前“斗魚一姐”消失在直播間

    來源:直播觀察提起“馮提莫”這個(gè)名字,很多網(wǎng)友或許聽過,但應(yīng)該不記得她是哪位主播了。其實(shí),作為曾經(jīng)的“斗魚一姐”,馮提莫在游戲直播的年代影響力不輸于現(xiàn)
  • 三翼鳥智能家居亮相電博會(huì),讓用戶體驗(yàn)更真實(shí)

    2021電博會(huì)在青島國際會(huì)展中心開幕中,三翼鳥直接把“家”搬到了現(xiàn)場(chǎng),成為了展會(huì)的一大看點(diǎn)。這也是三翼鳥繼9月9日發(fā)布了行業(yè)首個(gè)一站式定制智慧家平臺(tái)后的
  • 外交部:美方應(yīng)停止在網(wǎng)絡(luò)安全問題上不負(fù)責(zé)任地指責(zé)他國

      中國外交部今天(16日)舉行例行記者會(huì)。會(huì)上,有記者問,美國情報(bào)官員稱,他們正在阻攔來自中國以及其他國家的黑客獲取相關(guān)科研成果。 中方對(duì)此有何評(píng)論?對(duì)此
  • 北京:科技教育體驗(yàn)基地開始登記

      北京“科技館之城”科技教育體驗(yàn)基地登記和認(rèn)證工作日前啟動(dòng)。首批北京科技教育體驗(yàn)基地?cái)M于2023年全國科普日期間掛牌,后續(xù)還將開展常態(tài)化登記。  北京科技教育體驗(yàn)基
Top