Rust vs Go:常用语法对比(十二)
发布人:shili8
发布时间:2025-03-12 07:07
阅读次数:0
**Rust vs Go: 常用语法对比 (十二)**在前面的文章中,我们已经比较了 Rust 和 Go 的基本语法、类型系统、错误处理等方面。今天我们继续讨论这两种语言的常用语法,包括函数定义、闭包、迭代器、模式匹配等。
###1. 函数定义在 Rust 中,函数定义使用 `fn` 关键字来声明:
rustfn greet(name: &str) {
println!("Hello, {}!", name);
}
Go 的函数定义则使用 `func` 关键字:
gofunc greet(name string) {
fmt.Println("Hello, ", name)
}
注意,在 Rust 中,我们需要明确指定函数的返回类型(在本例中为 `()`,表示没有返回值),而 Go 会根据函数体自动推断返回类型。
###2.闭包Rust 和 Go 都支持闭包。Rust 使用 `fn` 关键字来定义闭包:
rustlet add = fn(x int) -> int {
x +1};
Go 的闭包定义则使用 `func` 关键字:
goadd := func(x int) int {
return x +1}
注意,在 Rust 中,我们需要明确指定闭包的返回类型(在本例中为 `int`),而 Go 会根据函数体自动推断返回类型。
###3. 迭代器Rust 和 Go 都支持迭代器。Rust 使用 `for` 关键字来定义迭代器:
rustlet numbers = vec![1,2,3,4,5];
for num in &numbers {
println!("{}", num);
}
Go 的迭代器定义则使用 `range` 关键字:
gonumbers := []int{1,2,3,4,5}
for _, num := range numbers {
fmt.Println(num)
}
注意,在 Rust 中,我们需要明确指定迭代器的类型(在本例中为 `&Vec
###4. 模式匹配Rust 和 Go 都支持模式匹配。Rust 使用 `match` 关键字来定义模式匹配:
rustlet x =5;
match x {
1 => println!("x is one"),
2 => println!("x is two"),
_ => println!("x is something else"),
}
Go 的模式匹配定义则使用 `switch` 关键字(在 Go1.16 之后支持):
gox :=5switch x {
case1:
fmt.Println("x is one")
case2:
fmt.Println("x is two")
default:
fmt.Println("x is something else")
}
注意,在 Rust 中,我们需要明确指定模式匹配的类型(在本例中为 `i32`),而 Go 会根据值自动推断模式匹配类型。
### 总结在这篇文章中,我们比较了 Rust 和 Go 的常用语法,包括函数定义、闭包、迭代器和模式匹配。虽然两种语言有很多相似之处,但也有一些区别。在实际开发中,选择哪种语言取决于具体的需求和偏好。
### 参考* [Rust语言参考]( />* [Go语言参考](

