成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發
今天的內容最主要跟大家分享,當使用 Rust 一段時間后回來寫 Go 的有哪些變化。

大家好,我是漁夫。

今天跟大家分享,當使用 Rust 一段時間后回來寫 Go 的有哪些變化。自己本身大部分工作上都是主要寫 Go 的,因為項目原因,以及我自己本身對 Rust 的熱愛,業余時間也喜歡寫各種小工具等等,所以,也越來越習慣 Rust 的寫法。

錯誤處理

以為我擺脫了 if err != nil { },在 Rust 中,很有可能會寫出類似 let result = some_function(),然后使用 match 或 ? 操作符來處理 Result。習慣使用 Rust 的寫法使用 ?, 模式匹配來處理錯誤情況,用起來還是有點舒服滴。

let result = some_function()?;

而 Go 呢,使用多返回值來處理錯誤,通常是返回一個結果和一個錯誤。

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

Rust 錯誤處理還是吸引很多開發者的,很多其他語言開發者,抱怨要是錯誤處理像 Rust 那種多爽,Rust 的錯誤處理機制也吸收了其他編程語言中錯誤處理的優點,并結合了 Rust 獨特的語言特性,如強類型系統、模式匹配和所有權模型,形成了一套高效、安全且易于使用的錯誤處理機制。

可以簡單了解 Rust 錯誤處理與其他語言的不同:

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

容易把 … := 打成 let … =

有時候不自覺地將 Rust 的編程習慣和風格帶入 Go 的編程中,使用 let 關鍵字代替 := , 在 Rust 中,變量通常是使用 let 關鍵字來聲明的。如:let x = 5。而在 Go 中,變量聲明和初始化通常使用 := 符號,也很容易把錯誤地在 Go 中使用如 let x := 5,而正確的方式是 x := 5。

容易寫循環時把 := range … 打成 in …

Rust 程序員在編寫 Go 代碼時,也很容易在循環結構中不自覺地將 Go 的 := range 語法寫成 Rust 風格的 in。

Rust :

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

Go :

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

函數定義關鍵字,容易把 func 寫成 fn

習慣了 Rust 后,切到寫 Go 代碼時,可能會錯誤地使用 fn 來定義函數,也會習慣性的寫錯。

Rust 的寫法:

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

Go 的寫法:

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

函數返回類型前,習慣加 ->

在 Rust 中,函數定義時,返回類型是通過 -> 符號指定的,緊跟在參數列表后面。

總是忘記 return

習慣性在函數中漏寫 return 語句,在 Rust 中,函數的最后一個表達式會自動作為函數的返回值,除非它以分號結尾。因此,在 Rust 中編寫函數時,經常省略 return 關鍵字。

Rust 如下例子:

fn add(a: i32, b: i32) -> i32 {
    a + b  // 這個自動返回 a + b 的結果
}

Go 例子:

必須顯式使用 return

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

習慣使用劃線命名

在 Rust 開發中,標準的變量和函數命名約定是使用下劃線分隔的小寫字母的,即所謂的 snake_case。

Rust:

fn demo_function() {
    let local_variable = 100;
}

Go:

func DemoFunction() {
    localVariable := 100
}

注意,Go 的首字母大小寫是有不同含義的。

好了,以上主要是分享當寫 Rust 后,切到其他語言時,通常習慣性使用 Rust 的寫法風格。當然有些沒有想到的,以上的習慣性,那種是你習慣性指數比較高的呢。學習 Rust 建議初學者要適應編譯告警一堆,還有跟編輯器做斗爭。

責任編輯:趙寧寧 來源: 碼農漁夫
相關推薦

2021-09-05 18:25:30

Go命令倉庫

2024-11-08 09:19:28

2024-06-18 07:46:13

2021-01-21 14:25:44

代碼開發Nature

2022-05-09 15:43:34

JavaScriptRust開發

2021-07-26 09:43:24

代碼MapStructs項目

2022-05-09 10:36:05

PythonPyScript開發者

2024-03-08 10:48:10

GoRust高性能

2020-05-19 07:59:39

JavaScript語言開發

2021-08-09 14:47:34

Go語言開發

2021-05-13 18:53:34

Go編譯器Uber

2021-03-10 09:54:43

RustNuShell系統

2022-01-26 20:43:04

集群構建塊Chunk

2021-10-20 10:08:31

編程技能開發

2020-07-07 07:00:00

RustGo語言編程語言

2021-01-05 14:44:39

比特幣加密貨幣黃金

2020-10-19 11:05:17

SpringTransaction事務

2022-09-16 07:40:17

CloudWeGo開源Rust

2023-05-23 13:59:41

RustPython程序

2024-11-26 07:25:00

Rust初始化模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线一区二区三区 | 国产精品成人国产乱一区 | 成人免费片 | 天天操操| 99在线精品视频 | 国产精品一区二 | 日韩午夜| 国产精品九九视频 | 亚洲欧美一区二区在线观看 | 亚洲精品久久区二区三区蜜桃臀 | 国产精品99久久久久久久久 | 中文字幕国产精品视频 | 免费的色网站 | 久久精品免费 | 国产激情99| 在线看免费的a | 国产精品视频不卡 | 日韩精品在线观看网站 | 国产高清在线精品 | 欧美日韩在线一区二区 | 中文字幕色站 | 欧美亚洲国产精品 | 色婷婷精品国产一区二区三区 | www.99re| 欧美一区二区免费 | 91视频大全| 天天操精品视频 | 欧美成人免费在线 | 国产亚洲精品a | 欧美在线观看网站 | 日韩在线成人 | 99热在线观看精品 | 免费国产视频 | 91在线视频观看免费 | 啪啪毛片 | 欧美一区久久 | 成人三级在线播放 | 91热爆在线观看 | 日本久久一区 | 婷婷在线视频 | 日韩免费av网站 |