🐹
ChatGPT intermediate

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 Go

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