Prompt completo
Crie um módulo Go que simule a gestão de um e-commerce. O módulo deve incluir structs para `Produto` (ID, Nome, Preço, QuantidadeEmEstoque) e `Pedido` (ID, Slice de IDs de Produtos, Status, DataCriacao). Implemente as seguintes funcionalidades como métodos ou funções no pacote `ecommerce`: 1. **`AdicionarProduto(produto Produto)`:** Adiciona um novo produto ao estoque. Retorna um erro se o ID já existir. 2. **`RemoverProduto(produtoID int)`:** Remove um produto do estoque pelo ID. Retorna um erro se o produto não for encontrado. 3. **`AtualizarEstoque(produtoID int, quantidade int)`:** Atualiza a quantidade em estoque de um produto. Aceita valores positivos para adicionar e negativos para remover. Retorna um erro se o produto não for encontrado ou se a remoção resultar em estoque negativo. 4. **`CriarPedido(produtoIDs []int)`:** Cria um novo pedido com base nos IDs dos produtos. Deve verificar a disponibilidade em estoque e diminuir as quantidades dos produtos no estoque. Se qualquer produto não estiver disponível em quantidade suficiente, o pedido não deve ser criado e o estoque não deve ser alterado, retornando um erro. O status inicial do pedido é "Pendente". 5. **`ProcessarPedido(pedidoID int)`:** Altera o status de um pedido para "Processado". Retorna um erro se o pedido não for encontrado ou já estiver processado/cancelado. 6. **`CancelarPedido(pedidoID int)`:** Altera o status de um pedido para "Cancelado" e **devolve os itens para o estoque**. Retorna um erro se o pedido não for encontrado ou já estiver cancelado. 7. **`ListarProdutosDisponiveis() []Produto`:** Retorna todos os produtos com quantidade em estoque maior que zero. 8. **`BuscarProdutoPorID(produtoID int) (Produto, error)`:** Retorna um produto específico pelo ID. Utilize maps para armazenar produtos e pedidos (ex: `map[int]Produto`, `map[int]Pedido`). Garanta que as operações de escrita (adição, remoção, atualização) sejam seguras para concorrência usando `sync.Mutex` ou `sync.R
Tags relacionadas
Go
Casos de uso práticos em Go
gerado-automaticamente
Como usar este prompt
1
Clique no botão "Copiar" para copiar o prompt para sua área de transferência
2
Acesse sua ferramenta de IA preferida (ChatGPT, ChatGPT, Claude, etc.)
3
Cole o prompt e adapte conforme necessário para seu contexto específico
Outros prompts de Go
ChatGPT
Melhores práticas de documentação em go para Go
Prompt gerado automaticamente para Documentação em Go em Go
2 usos
ChatGPT
Melhores práticas de debugging em go para Go
Prompt gerado automaticamente para Debugging em Go em Go
4 usos
ChatGPT
Melhores práticas de casos de uso práticos em go para Go
Prompt gerado automaticamente para Casos de uso práticos em Go em Go
4 usos