• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Asc.416e74
博客园    首页    新随笔    联系   管理     

Rust 基礎(03) 結構體

結構體

聲明

Rust 通過struct聲明一個結構體,內部使用字段名: 數據類型,的格式定義字段。

struct Gire {
    Name: String,
    Email: String,
    Tel: String,
}

使用

初始化的時候需要對結構體中的每一個字段都進行初始化(Rust 不會將未初始化的字段寫入零值),想要調用字段只需要通過對象加點即可。

let mut g = Gire{
    Name:String::from("zhang-wei"),
    Email:String::from("zhangwei@gmail.com"),
    Tel:String::from("171-9845-0989"),
};
println!("my love,the {}",g.Name)

方法

Rust 與 Golang 相似,是將方法綁定到結構體上,而非使用的class類型,但是與 Golang 不同的是將方法綁定到結構體上不是在函數名前添加結構體名而是使用 impl 聲明一個結構體的方法(一個impl塊中可以聲明多個方法,一個結構體可以有多個impl)。所有方法中的第一個參數都是self,並且可以通過self調用自己的屬性,如同C++當中的this關鍵字————如果可以沒有self參數,但是那不是方法,而叫關聯函數,調用方法也與普通的方法不同,接下來很快就會講到。

impl Gire {
    fn love(self, bf: &str) {
        println!("{} and {}", self.Name, bf);
    }

    fn introduce(self){
        println!("name: {}\nemail: {}\ntel: {}\n",self.Name,self.Email,self.Tel);
    }
}

關聯函數

關聯函數在定義的時候沒有self,也無法通過實例化的對象調用,需要通過結構體名直接調用。

fn main(){
  ...
    let name =String::from("zw");
    let tel =String::from("173-9777-8889");
    let emal =String::from("zw@gmail.com");
    let g= Gire::brown(name,tel,emal);
  ...
}

impl Gire{
    fn brown(name: String, tel: String, email: String)->Gire{
        Gire { Name: name, Email: email, Tel: tel }
    }
}
posted @ 2022-07-21 23:40  ストッキング  阅读(37)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3