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}"};
}

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

相关推荐
孞㐑¥1 分钟前
C++之哈希
开发语言·c++·经验分享·笔记
勇敢牛牛_4 分钟前
【Rust基础】crossbeam带来的阻塞问题
开发语言·笔记·rust
东雁西飞5 分钟前
MATLAB 控制系统设计与仿真 - 34
开发语言·单片机·算法·matlab·工业机器人
奇树谦12 分钟前
C/C++语言常见问题-智能指针、多态原理
c语言·开发语言·c++
桃子叔叔1 小时前
python学习从0到专家(8)容器之列表、元组、字典、集合、字符串小结
开发语言·python·学习
溟洵1 小时前
【C++ Qt】Hello World、初始信号槽、理解对象树 ~~~(通俗易懂 图文并茂)
开发语言·c++·qt
m0_726965981 小时前
Java Bean演进历程:从POJO到Spring Boot配置绑定
java·开发语言·spring boot
老朋友此林1 小时前
go语言学习笔记:gin + gorm + mysql 用户增删改查案例入门
mysql·golang·gin
想做富婆1 小时前
python入门:不同进制数据的表示方式,转换;数据类型的转换,隐式类型的转换
开发语言·python
Littlehero_1211 小时前
qt中关于思源雅黑字体的使用
开发语言·qt