Rust vs Go:常用语法对比(十一)
发布人:shili8
发布时间:2025-03-14 14:54
阅读次数:0
**Rust vs Go: 常用语法对比 (十一)**在前几篇文章中,我们已经比较了 Rust 和 Go语言的基本语法、类型系统、错误处理等方面。今天我们继续讨论这两种语言的常用语法,包括函数定义、闭包、迭代器和模式匹配。
### 函数定义Rust 和 Go 都支持函数定义,但它们的写法有所不同。
**Rust**
rustfn greet(name: &str) -> String { format!("Hello, {}!", name) }
在 Rust 中,函数定义使用 `fn` 关键字,函数名后面跟着参数列表和返回值类型。这里我们定义了一个 `greet` 函数,它接受一个 `&str` 类型的参数,并返回一个 `String` 类型的结果。
**Go**
gofunc greet(name string) string { return fmt.Sprintf("Hello, %s!", name) }
在 Go 中,函数定义使用 `func` 关键字,函数名后面跟着参数列表和返回值类型。这里我们定义了一个 `greet` 函数,它接受一个 `string` 类型的参数,并返回一个 `string` 类型的结果。
###闭包Rust 和 Go 都支持闭包,但它们的写法有所不同。
**Rust**
rustfn add(x int) -> Box<dyn Fn(int) -> int> { let closure = |y| x + y; Box::new(closure) }
在 Rust 中,闭包使用 `|` 符号定义。这里我们定义了一个 `add` 函数,它接受一个 `int` 类型的参数,并返回一个闭包类型的结果。
**Go**
gofunc add(x int) func(int) int { return func(y int) int { return x + y } }
在 Go 中,闭包使用函数定义来实现。这里我们定义了一个 `add` 函数,它接受一个 `int` 类型的参数,并返回一个闭包类型的结果。
### 迭代器Rust 和 Go 都支持迭代器,但它们的写法有所不同。
**Rust**
rustfn iterate(vec Vec) -> impl Iterator- { vec.into_iter() }
在 Rust 中,迭代器使用 `into_iter` 方法来实现。这里我们定义了一个 `iterate` 函数,它接受一个 `Vec` 类型的参数,并返回一个迭代器类型的结果。
**Go**
gofunc iterate(vec []int) <-chan int { ch := make(chan int) go func() { for _, v := range vec { ch <- v } close(ch) }() return ch}
在 Go 中,迭代器使用通道来实现。这里我们定义了一个 `iterate` 函数,它接受一个 `[]int` 类型的参数,并返回一个通道类型的结果。
### 模式匹配Rust 和 Go 都支持模式匹配,但它们的写法有所不同。
**Rust**
rustfn match_value(value int) { match value { 1 => println!("One"), 2 => println!("Two"), _ => println!("Other"), } }
在 Rust 中,模式匹配使用 `match` 关键字来实现。这里我们定义了一个 `match_value` 函数,它接受一个 `int` 类型的参数,并根据不同的值进行不同操作。
**Go**
gofunc matchValue(value int) { switch value { case1: fmt.Println("One") case2: fmt.Println("Two") default: fmt.Println("Other") } }
在 Go 中,模式匹配使用 `switch` 关键字来实现。这里我们定义了一个 `matchValue` 函数,它接受一个 `int` 类型的参数,并根据不同的值进行不同操作。
综上所述,我们可以看到 Rust 和 Go语言都支持函数定义、闭包、迭代器和模式匹配等常用语法,但它们的写法有所不同。Rust 使用 `fn` 关键字来定义函数,Go 使用 `func` 关键字;Rust 使用 `|` 符号来定义闭包,Go 使用函数定义来实现闭包;Rust 使用 `into_iter` 方法来实现迭代器,Go 使用通道来实现迭代器;Rust 使用 `match` 关键字来实现模式匹配,Go 使用 `switch` 关键字。
以上就是本文的全部内容。希望通过对比 Rust 和 Go语言的常用语法,可以更好地理解这两种语言之间的差异和相似之处。