结构体 day6
本文最后更新于 106 天前,其中的信息可能已经有所发展或是发生改变。

结构体解释

结构体包含多个相关的值,与元组相似的是,它也可以包含多个不同类型的值,与元组不同的是,结构体的值需要命名来让值更加清晰,这也让结构体更加灵活,我们不必像元组一样依赖顺序进行访问或指定

基础写法

struct User {
    username:String,
    age:u8,
    hobby:String,
    smoking:bool,
} 

结构体需要进行实例化才可以使用,如果实例时值与命名相同可以省略,实例化默认为不可变

let mut user = User{
    username,
    age:10,
    hobby,
    smoking:true,
}

结构体的可以使用 . 来进行索引如

user.age = 11;

特性

  • 结构体更新语法: 使用现有实例创建新实例时可用 *…*语法复制剩余实例
  • 当字段名不重要时可用元组结构体
  • 可用类单元结构体标记类型而不存储数据
  • 结构体所有权
  • 打印结构体使用#[derive(debug)]
  • 使用模式匹配解构结构体
//特性1
let user2 = User{
    age = 11,
    ..user
}
//特性2
struct Yuanzu=(i32,u8);
//特性3
struct Danyuan;
//特性4
//结构体中可以使用引用但必须标注生命周期,结构体中某一字段所有权发生转移则这一实例将无法使用,但其他字段不受影响
let user1 = User{
    username:String::from("小明"),
    age:18,
    hobby=String::from("打飞机"),
    smoking:true,
}
let user2 =User{
    age:20,
    ..user1
}
//这里username和hobby所有权转移,smoking为简单类型,不发生所有权转移,所以之后调用user1.username或user1会报错,user1.age可正常调用
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇