Documentação de Go

Literais compostos em Go

Como construir valores de structs, arrays, slices e maps por expressões literais, inclusive inicializando campos por nome.

Revisado em 2026-11-15

Criar uma struct com campos nomeados

Um literal composto combina o tipo e os valores iniciais entre chaves. Em uma struct, podemos nomear os campos. A forma nomeada deixa claro o significado dos valores e permite omitir campos, que recebem seus valores zero.

account := Account{ID: "a", Balance: 5000}

Obter um ponteiro para o valor

O operador & também pode receber um literal composto. &Account{...} inicializa um valor e produz um ponteiro para ele. Assim, return &TransferService{accounts: accounts} retorna *TransferService sem declarar uma variável temporária.

A função NewTransferService é uma convenção comum. Não é necessária para instanciar uma struct; pode encapsular validação ou preparação de dependências.

func NewTransferService(accounts AccountRepository) *TransferService {
    return &TransferService{accounts: accounts}
}

Fontes primárias