📅  最后修改于: 2021-01-08 13:39:10             🧑  作者: Mango
结构是用户定义的数据类型,由不同数据类型的变量组成。通过在结构名称之前使用struct关键字定义结构。结构成员括在大括号内。在花括号内,用其名称和类型定义结构成员,并且结构成员也称为field 。
struct Student
{
member-variable1;
member-variable2;
.
.
}
在以上语法中,结构是通过使用关键字struct定义的。结构包含不同类型的变量。
如何声明结构实例
let user = Student{
// key:value pairs;
}
在上面的声明中,用户是Student结构的实例。通过使用结构名称和大括号来定义它。大括号包含key:value对,其中keys是字段的名称,而value是我们要存储在key字段中的数据。
让我们创建一个员工结构:
struct Employee{
employee_name : String,
employee_id: u64,
employee_profile: String,
active: bool,
}
员工结构实例:
let employee = Employee{
employee_name : String::from("Akshay Gupta"),
employee_id: 12,
employee_profile : String::from("Computer Engineer"),
active : true,
};
我们可以使用点表示法访问结构的特定成员变量。假设我们要访问Employee结构的employee_name变量,则它看起来像:
employee.employee_name;
注意:如果要使用点符号来更改特定字段的值,则必须使实例可变,因为Rust不允许特定字段可变。
let mut employee = Employee{
employee_name : String::from("Akshay Gupta"),
employee_id: 12,
employee_profile : String::from("Computer Engineer"),
active : true,
};
employee.employee_name = String :: from("Akhil Gupta");
在函数体内创建一个实例:
fn create_employee(name:String, profile:String)
{
Employee{
employee_name:name,
employee_id:12,
employee_profile:profile,
active:true,
}
}
在上面的示例中,在函数体内隐式创建了Employee结构的实例。 create_employee()函数返回具有给定名称和配置文件的Employee结构的实例。
当传递给函数的参数和字段名称相同时,使用Field Init简写。
当变量和字段名称相同时,Rust提供了使用字段初始化速记的灵活性。无需重复字段和变量。
fn create_employee(employee_name:String, employee_profile:String)
{
Employee{
employee_name,
employee_id:12,
employee_profile,
active:true,
}
}
在上面的示例中,参数和字段的名称相同。因此,无需编写employee_name:employee_name ,可以直接将其写为employee_name 。