Rust所有权--与go对比学

如何拿返回值,如何不传递所有权就更改原值?如果想操作更改元变量要怎么做呢?

分别执行以下go代码:

go 复制代码
func main() {
	var a = 10
	//calc1(a)
	//a = calc_return(a)
	calc2(&a)
	a = 100
	calc3(&a)

	fmt.Println(a)
}
func calc1(num int) {
	num += num
}
func calc_return(num int) int {
	num += num
	return num
}
func calc2(num *int) {
	*num += *num
}
func calc3(num *int) {
	*num += *num
}

rust代码:

rust 复制代码
use std::string;
fn main() {
    let mut s1  = String::from("learn rust");
    s1 =  foo_return(s1);
    println!{"{s1}"};  
    
}
fn  foo_return(s:String)->String{
    println!{"{s}"};
    s
}
rust 复制代码
use std::string;
fn main() {
    let mut s1  = String::from("learn rust");
    // foo1(s1);
    // foo2(&s1);
    foo3(&mut s1);
 
    println!{"{s1}"};
    foo3(&mut s1);
    
    
}
fn  foo1(s:String){
   
     println!{"{s}"};
}
fn  foo2(s:&String){
   
     println!{"{s}"};
}
fn  foo3(s:&mut String){
    s.push_str(",you can be 666");
     println!{"{s}"};
}

自己去体会其中的不同之处

相关推荐
知识分享小能手2 分钟前
Html5学习教程,从入门到精通,HTML5 简介语法知识点及案例代码(1)
开发语言·前端·javascript·学习·前端框架·html·html5
muxue1784 分钟前
go:运行第一个go语言程序
开发语言·后端·golang
米饭好好吃.5 分钟前
【Go】Go wire 依赖注入
开发语言·后端·golang
闲猫5 分钟前
go 接口interface func (m Market) getName() string {
开发语言·后端·golang
Good Note6 分钟前
Golang的静态强类型、编译型、并发型
java·数据库·redis·后端·mysql·面试·golang
可爱de艺艺6 分钟前
Go入门之struct
开发语言·后端·golang
信徒_9 分钟前
Go 语言中的协程
开发语言·后端·golang
begei14 分钟前
飞牛os使用ddns-go配合华为云实现内网穿透
开发语言·golang·华为云
向哆哆44 分钟前
Java应用程序的跨平台性能优化研究
java·开发语言·性能优化
free-elcmacom1 小时前
C语言番外篇(3)------------>break、continue
c语言·开发语言