Acessando Campos de uma Struct
Parte da seção Logic & Flow 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 dentro dela. O Rust usa a notação de ponto para acessar campos individuais dentro de uma struct.
A sintaxe é direta: você escreve o nome da instância da struct, seguido por 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 número inteiro) e sua quilometragem (como um número 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 desta struct usando os valores de entrada, depois 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 (ex:
Tesla Model 3) - Segunda linha: Ano como um número inteiro (ex:
2022) - Terceira linha: Quilometragem como um número inteiro (ex:
15000)
Saída:
- Primeira linha:
Car: [model] - Segunda linha:
Year: [year] - Terceira linha:
Mileage: [mileage] km
Folha de consulta
Para acessar campos dentro de uma instância de struct, use a notação de ponto:
let product = Product {
name: String::from("Laptop"),
price: 999,
};
println!("Product: {}", product.name);
println!("Price: ${}", product.price);A sintaxe é: instance_name.field_name. Os valores acessados podem ser usados em expressões, atribuídos a variáveis ou passados para funções.
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 Logic & Flow
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 Final