fnmain(){let x:i8=5;let y:Option<i8>=Some(5);//将 Option<T> 中的 T 转换成 Tlet yy = y.expect("get Option<i8> fail");let sum = x + yy;println!("{}", sum)}
match
允许一个值与一系列模式进行匹配,并执行匹配的模式对应的代码(示例)
enumNum{One,Two,Three,}fnvalue_in_cents(num:Num)->u8{// 依次匹配match num {Num::One=>{println!("match One");1},Num::Two=>2,Num::Three=>3,}}fnmain(){let num =Num::One;println!("{}",value_in_cents(num))}
绑定值的模式:匹配的分支可以绑定到被匹配对象的部份值,可以从 enum 变体中提取值
#[derive(Debug)]enumName{Tim,Hope,}enumNum{One,Two,Three(Name),}fnvalue_in_cents(num:Num)->u8{// 依次匹配match num {Num::One=>{println!("match One");1},Num::Two=>2,Num::Three(name)=>{println!("three name is: {:#?}", name);//three name is: Hope3},}}fnmain(){let num =Num::Three(Name::Hope);println!("{}",value_in_cents(num))// 3}
匹配 Option
fnmain(){let five =Some(5);let six =plus_one(five);let none =plus_one(None);// println!("{}, {}", six, none);}fnplus_one(x:Option<i32>)->Option<i32>{match x {None=>None,Some(i)=>Some(i+1),}}
match 匹配必须穷举所有的可能性(会在编译时检查),如果不需要处理,可以使用通配符“_”替代:
fnmain(){let v =0u8;match v {1=>println!("one"),2=>println!("two"),_ =>(),}}
if let
处理只关注一种匹配,而忽略其他匹配的情况
更少的代码,更少的缩进,更少的模版代码
但是放弃了穷举的可能
fnmain(){let v =0u8;match v {2=>println!("two"),_ =>println!("other"),}// 等效于上面的逻辑iflet2= v {println!("two");}else{println!("other");}}
在 Ubuntu 22.04 上安装 Go 语言可以通过几种不同的方法,以下是两种常见的安装方法:
方法1:使用 go 官方安装脚本 打开终端。 下载 Go 语言的安装脚本: curl -O https://go.dev/dl/go1.22.5.linux-amd64.tar.gz请检查 Go 官方网…
S NIFFER : Multimodal Large Language Model for Explainable Out-of-Context Misinformation Detection 论文地址:
https://openaccess.thecvf.com/content/CVPR2024/papers/Qi_SNIFFER_Multimodal_Large_Language_Model_for_Explainable_Out-of-Context_Misinformation_D…
一.ftp 创建用户
passwd: user ftpuser does not exist
如果你遇到 passwd: user ftpuser does not exist 的错误,这意味着系统中不存在名为 ftpuser 的用户。你需要首先确认FTP用户是否是系统用户,还是FTP服务器软件(如Pure-FTPdÿ…