Acessando Campos de uma Struct
Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 22 de 66.
Depois de criar uma instância de struct, você precisa de uma maneira de recuperar os valores armazenados nela. Rust usa a notação de ponto para acessar campos individuais dentro de uma struct.
A sintaxe é simples: você escreve o nome da instância da struct, seguido de um ponto e, em seguida, o nome do campo que deseja acessar:
let product = Product {
name: String::from("Laptop"),
price: 999,
};
println!("Product: {}", product.name);
println!("Price: ${}", product.price);Esta notação de ponto funciona exatamente como o acesso a propriedades em outras linguagens de programação. Você pode usar os valores acessados em expressões, atribuí-los a variáveis ou passá-los para funções — eles se comportam exatamente como qualquer outro valor desse tipo.
Desafio
FácilVocê receberá três entradas: o nome do modelo de um carro, o ano do carro (como um inteiro) e sua quilometragem (como um inteiro). Defina uma struct Car com três campos: model do tipo String, year do tipo i32 e mileage do tipo i32. Crie uma instância dessa struct usando os valores de entrada e, em seguida, acesse e imprima cada campo.
Requisitos:
- Defina uma struct
Carcom os campos:model: String,year: i32emileage: i32 - Leia a primeira entrada como o modelo do carro
- Leia a segunda entrada e converta-a para
i32para o ano - Leia a terceira entrada e converta-a para
i32para a quilometragem - Crie uma instância da struct
Carcom esses valores - Use a notação de ponto para acessar cada campo e imprimir as informações do carro no formato exato mostrado abaixo
Entrada:
- Primeira linha: Modelo do carro (por exemplo,
Tesla Model 3) - Segunda linha: Ano como um inteiro (por exemplo,
2022) - Terceira linha: Quilometragem como um inteiro (por exemplo,
15000)
Saída:
- Primeira linha:
Car: [model] - Segunda linha:
Year: [year] - Terceira linha:
Mileage: [mileage] km
Experimente você mesmo
use std::io;
// TODO: Defina a struct Car aqui com os campos: model, year, e mileage
fn main() {
// Lê o modelo do carro
let mut model = String::new();
io::stdin().read_line(&mut model).expect("Failed to read line");
let model = model.trim().to_string();
// Lê o ano
let mut year_input = String::new();
io::stdin().read_line(&mut year_input).expect("Failed to read line");
let year: i32 = year_input.trim().parse().expect("Invalid year");
// Lê a quilometragem
let mut mileage_input = String::new();
io::stdin().read_line(&mut mileage_input).expect("Failed to read line");
let mileage: i32 = mileage_input.trim().parse().expect("Invalid mileage");
// TODO: Crie uma instância da struct Car usando os valores de entrada
// TODO: Acesse e imprima cada campo no formato exigido
// Car: [model]
// Year: [year]
// Mileage: [mileage] km
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo FinalPratique por conta própria: Compilador de Rust online