{"id":26127808,"url":"https://github.com/carvalhocaio/estoque-go","last_synced_at":"2025-07-09T06:02:18.502Z","repository":{"id":279334474,"uuid":"938464478","full_name":"carvalhocaio/estoque-go","owner":"carvalhocaio","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-07T01:18:27.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-07T02:25:25.730Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carvalhocaio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-25T02:03:17.000Z","updated_at":"2025-03-07T01:18:33.000Z","dependencies_parsed_at":"2025-02-25T03:29:38.291Z","dependency_job_id":null,"html_url":"https://github.com/carvalhocaio/estoque-go","commit_stats":null,"previous_names":["carvalhocaio/estoque-go"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvalhocaio%2Festoque-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvalhocaio%2Festoque-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvalhocaio%2Festoque-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carvalhocaio%2Festoque-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carvalhocaio","download_url":"https://codeload.github.com/carvalhocaio/estoque-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242903697,"owners_count":20204319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-10T18:38:10.169Z","updated_at":"2025-03-10T18:38:10.717Z","avatar_url":"https://github.com/carvalhocaio.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Métodos em Go\n\nGo permite definir métodos para tipos personalizados dentro do bloco do pacote:\n\n```go\ntype Person struct {\n    FirstName string\n    LastName  string\n    Age       int\n}\n\nfunc (p Person) String() string {\n    return fmt.Sprintf(\"%s %s, idade %d\", p.FirstName, p.LastName, p.Age)\n}\n```\n\n## Definição de Métodos\n\n- Métodos são semelhantes a funções, mas incluem um **receptor**, que aparece antes do nome do\nmétodo.\n\n- O receptor deve ter um nome curto, geralmente uma abreviação do tipo (ex.: `p` para `Person`), e \n**não se usa** `this` ou `self`.\n\n- Métodos só podem ser definidos no **nível do pacote**.\n\n## Convenções e Restrições\n\n- Sem sobrecarga de métodos: um tipo não pode ter dois métodos com o mesmo nome.\n\n- Métodos não podem ser adicionados a tipos externos: é necessário estar no mesmo pacote\nonde o tipo foi definido.\n\n- Código organizado: recomenda-se manter a definição do tipo e seus métodos juntos.\n\nEssas práticas reforçam a clareza e simplicidade do Go, evitando padrões tradicionais de\norientação a objetos.\n\n# Logging em Go\n\nO **logging** é essencial para monitoramento e rastreamento de erros em sistemas de estoque. A escolha da biblioteca correta impacta desempenho e escalabilidade. Aqui estão três opções populares:\n\n## 1. Log (Pacote Padrão)\n\nO pacote `log` é simples e ideal para aplicações menores.\n\nFuncionalidades:\n\n- Registro de mensagens com níveis básicos (Info, Error, Fatal).\n\n- Suporte para formatação simples.\n\n- Escrita de logs em arquivos e console.\n\n```go\npackage main\n\nimport (\n    \"log\"\n)\n\nfunc main() {\n    log.Println(\"Log de informação\")\n    log.Fatal(\"Log de erro\")\n}\n```\n\n## 2. Logrus\n\nO Logrus oferece logs estruturados e flexibilidade na saída de logs.\n\nFuncionalidades:\n\n- Formatos estruturados (JSON, texto).\n\n- Suporte a múltiplos destinos (console, arquivos, monitoramento).\n\n- Hooks para integração com ferramentas externas.\n\n- Níveis de log personalizáveis.\n\n```go\npackage main\n\nimport (\n    \"github.com/sirupsen/logrus\"\n)\n\nfunc main() {\n    log := logrus.New()\n    log.SetFormatter(\u0026logrus.TextFormatter{FullTimestamp: true})\n\n    log.Info(\"Log de informação\")\n    log.Warn(\"Log de aviso\")\n    log.Error(\"Log de erro\")\n}\n```\n\n## 3. ZAP\n\nO Zap, criado pelo Uber, é otimizado para alta performance e eficiência.\n\nFuncionalidades:\n\n- Alto desempenho e baixa latência.\n\n- Logs estruturados para sistemas de grande escala.\n\n- Recomendado para aplicações de alto tráfego.\n\n```go\npackage main\n\nimport (\n    \"go.uber.org/zap\"\n)\n\nfunc main() {\n    logger, _ := zap.NewProduction()\n    defer logger.Sync()\n\n    logger.Info(\"Log de informação\", zap.String(\"user\", \"clienteX\"))\n    logger.Warn(\"Log de aviso\")\n    logger.Error(\"Log de erro\")\n}\n```\n\nA escolha depende do projeto:\n\n- Pacote log: Simples e direto.\n\n- Logrus: Flexibilidade e integração com ferramentas externas.\n\n- Zap: Melhor desempenho para sistemas de grande escala.\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarvalhocaio%2Festoque-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarvalhocaio%2Festoque-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarvalhocaio%2Festoque-go/lists"}