当前位置:首页 > 科技  > 软件

使用 Rust 后,我写 Go 的方法都变了!

来源: 责编: 时间:2024-01-18 17:33:01 321观看
导读大家好,我是渔夫。今天跟大家分享,当使用 Rust 一段时间后回来写 Go 的有哪些变化。自己本身大部分工作上都是主要写 Go 的,因为项目原因,以及我自己本身对 Rust 的热爱,业余时间也喜欢写各种小工具等等,所以,也越来越习惯 R

大家好,我是渔夫。STL28资讯网——每日最新资讯28at.com

今天跟大家分享,当使用 Rust 一段时间后回来写 Go 的有哪些变化。自己本身大部分工作上都是主要写 Go 的,因为项目原因,以及我自己本身对 Rust 的热爱,业余时间也喜欢写各种小工具等等,所以,也越来越习惯 Rust 的写法。STL28资讯网——每日最新资讯28at.com

STL28资讯网——每日最新资讯28at.com

错误处理

以为我摆脱了 if err != nil { },在 Rust 中,很有可能会写出类似 let result = some_function(),然后使用 match 或 ? 操作符来处理 Result。习惯使用 Rust 的写法使用 ?, 模式匹配来处理错误情况,用起来还是有点舒服滴。STL28资讯网——每日最新资讯28at.com

let result = some_function()?;

而 Go 呢,使用多返回值来处理错误,通常是返回一个结果和一个错误。STL28资讯网——每日最新资讯28at.com

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

Rust 错误处理还是吸引很多开发者的,很多其他语言开发者,抱怨要是错误处理像 Rust 那种多爽,Rust 的错误处理机制也吸收了其他编程语言中错误处理的优点,并结合了 Rust 独特的语言特性,如强类型系统、模式匹配和所有权模型,形成了一套高效、安全且易于使用的错误处理机制。STL28资讯网——每日最新资讯28at.com

可以简单了解 Rust 错误处理与其他语言的不同:STL28资讯网——每日最新资讯28at.com

  • 模式匹配与强类型系统(类似于 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。STL28资讯网——每日最新资讯28at.com

容易写循环时把 := range … 打成 in …

Rust 程序员在编写 Go 代码时,也很容易在循环结构中不自觉地将 Go 的 := range 语法写成 Rust 风格的 in。STL28资讯网——每日最新资讯28at.com

Rust :STL28资讯网——每日最新资讯28at.com

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

Go :STL28资讯网——每日最新资讯28at.com

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

函数定义关键字,容易把 func 写成 fn

习惯了 Rust 后,切到写 Go 代码时,可能会错误地使用 fn 来定义函数,也会习惯性的写错。STL28资讯网——每日最新资讯28at.com

Rust 的写法:STL28资讯网——每日最新资讯28at.com

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

Go 的写法:STL28资讯网——每日最新资讯28at.com

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

函数返回类型前,习惯加 ->

在 Rust 中,函数定义时,返回类型是通过 -> 符号指定的,紧跟在参数列表后面。STL28资讯网——每日最新资讯28at.com

总是忘记 return

习惯性在函数中漏写 return 语句,在 Rust 中,函数的最后一个表达式会自动作为函数的返回值,除非它以分号结尾。因此,在 Rust 中编写函数时,经常省略 return 关键字。STL28资讯网——每日最新资讯28at.com

Rust 如下例子:STL28资讯网——每日最新资讯28at.com

fn add(a: i32, b: i32) -> i32 {    a + b  // 这个自动返回 a + b 的结果}

Go 例子:STL28资讯网——每日最新资讯28at.com

必须显式使用 returnSTL28资讯网——每日最新资讯28at.com

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

习惯使用划线命名

在 Rust 开发中,标准的变量和函数命名约定是使用下划线分隔的小写字母的,即所谓的 snake_case。STL28资讯网——每日最新资讯28at.com

Rust:STL28资讯网——每日最新资讯28at.com

fn demo_function() {    let local_variable = 100;}

Go:STL28资讯网——每日最新资讯28at.com

func DemoFunction() {    localVariable := 100}

注意,Go 的首字母大小写是有不同含义的。STL28资讯网——每日最新资讯28at.com

好了,以上主要是分享当写 Rust 后,切到其他语言时,通常习惯性使用 Rust 的写法风格。当然有些没有想到的,以上的习惯性,那种是你习惯性指数比较高的呢。学习 Rust 建议初学者要适应编译告警一堆,还有跟编辑器做斗争。STL28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-64498-0.html使用 Rust 后,我写 Go 的方法都变了!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Galaxy AI 赋能影像创作 三星 Galaxy S24 系列解锁进阶体验

下一篇: 2024 年 Vue.js 会发生什么?

标签:
  • 热门焦点
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之“想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!”曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 半导体需求下滑 三星电子DS业务部门今年营业亏损预计超10万亿韩元

    7月17日消息,据外媒报道,去年下半年开始的半导体需求下滑,影响到了三星电子、SK海力士、英特尔等诸多厂商,营收明显下滑,部分厂商甚至出现了亏损。作为
  • 回归OPPO两年,一加赢了销量,输了品牌

    成为OPPO旗下主打性能的先锋品牌后,一加屡创佳绩。今年618期间,一加手机全渠道销量同比增长362%,凭借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
  • 联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    ThinkBook Plus 是联想的一个特殊笔记本类别,它在封面放入了一块墨水屏,也给人留下了较为深刻的印象。据有人爆料,联想的下一款 ThinkBook Plus 可能更特殊,它
Top