{"id":4134,"date":"2023-10-01T20:34:54","date_gmt":"2023-10-01T23:34:54","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=4134"},"modified":"2023-10-01T20:34:58","modified_gmt":"2023-10-01T23:34:58","slug":"meus-primeiros-passos-com-go-inclui-bibliografia-comentada","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=4134","title":{"rendered":"Meus primeiros passos com Go (inclui bibliografia comentada)"},"content":{"rendered":"\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"540\" height=\"352\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png\" alt=\"\" class=\"wp-image-4135\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png 540w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go-300x196.png 300w\" sizes=\"(max-width: 540px) 100vw, 540px\" \/><\/figure>\n\n\n\n<p>Fiz uma imers\u00e3o em Go e neste post compartilho com voc\u00eas minhas primeiras impress\u00f5es. Aproveito e tamb\u00e9m exponho meu plano de estudos que talvez ajude quem estiver dando seus primeiros passos na linguagem.<\/p>\n\n\n\n<p>J\u00e1 adianto: por que n\u00e3o fiz esta imers\u00e3o antes???<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/06\/alerta.png\" alt=\"\" class=\"wp-image-4118\" width=\"164\" height=\"164\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/06\/alerta.png 512w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/06\/alerta-300x300.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/06\/alerta-150x150.png 150w\" sizes=\"(max-width: 164px) 100vw, 164px\" \/><\/figure>\n\n\n\n<p>Neste post h\u00e1 minhas <strong>primeiras impress\u00f5es<\/strong>: leia da forma mais cr\u00edtica poss\u00edvel, ok?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Meus objetivos<\/h2>\n\n\n\n<p>A plataforma Java n\u00e3o sai de mim e dificilmente sair\u00e1, mas h\u00e1 alguns requisitos para os quais ela ainda n\u00e3o \u00e9 ideal quando precisamos implementar solu\u00e7\u00f5es que sejam:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nativas para realizar integra\u00e7\u00f5es de mais baixo n\u00edvel.<\/li>\n\n\n\n<li>De r\u00e1pida inicializa\u00e7\u00e3o (para lambda functions, por exemplo).<\/li>\n\n\n\n<li>Baix\u00edssimo consumo de mem\u00f3ria e recursos computacionais.<\/li>\n\n\n\n<li>Baseadas em linha de comando (para tooling em alguns de nossos projetos).<\/li>\n\n\n\n<li>Que possa ser compiladas para diferentes plataformas (embarcados \u00e9 um plus interessante aqui).<\/li>\n\n\n\n<li>Se for poss\u00edvel implementar APIs baseadas em HTTP, \u00f3timo (\u00e9 um plus).<\/li>\n<\/ul>\n\n\n\n<p>Todos os pontos acima consigo hoje na plataforma Java (especialmente ap\u00f3s o <a href=\"https:\/\/www.graalvm.org\/\">GraalVM<\/a>), mas n\u00e3o \u00e9 natural na plataforma ainda. Ent\u00e3o nestes casos buscamos alternativas, dentre as quais uma que se mostrou bastante interessante foi Rust (escrevi a respeito <a href=\"https:\/\/devkico.itexto.com.br\/?p=3326\">aqui<\/a>). \u00c9 imposs\u00edvel n\u00e3o fazer compara\u00e7\u00f5es com ela neste post.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Meu plano de estudos<\/h2>\n\n\n\n<p>Comecei a imers\u00e3o definindo os objetivos que me permitiram ter uma vis\u00e3o pr\u00e1tica de Go:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O primeiro \u00e9 escrever uma ferramenta de linha de comando que seja realmente \u00fatil para mim. Ent\u00e3o criei uma que gera arquivos no formato JSON tendo como entrada algumas planilhas que uso em meu dia a dia.<\/li>\n\n\n\n<li>O segundo foi escrever uma API REST usando como base de dados os arquivos gerados pelo primeiro projeto.<\/li>\n<\/ul>\n\n\n\n<p>Com isto o primeiro objetivo me forneceu a seguran\u00e7a que eu precisaria para poder sair do core da linguagem e, assim, experimentar frameworks e bibliotecas mantidas pela comunidade e assim <strong>sentir<\/strong> (friso o termo &#8220;sentir&#8221; pois s\u00e3o primeiras impress\u00f5es ainda) como as pessoas lidam com este ecossistema.<\/p>\n\n\n\n<p>Planejo meus estudos com minha pr\u00f3pria metodologia que pode ser lida <a href=\"https:\/\/devkico.itexto.com.br\/?p=3093\">neste link<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bibliografia r\u00e1pida e comentada<\/h3>\n\n\n\n<p>Optei por focar na documenta\u00e7\u00e3o oficial para come\u00e7ar, clicando sobre o link &#8220;<a href=\"https:\/\/go.dev\/learn\/\">Learn<\/a>&#8221; do site oficial (<a href=\"https:\/\/go.dev\">https:\/\/go.dev<\/a>). Aqui voc\u00ea ver\u00e1 as tr\u00eas op\u00e7\u00f5es expostas no print abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"891\" height=\"369\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image.png\" alt=\"\" class=\"wp-image-4136\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image.png 891w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image-300x124.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image-768x318.png 768w\" sizes=\"(max-width: 891px) 100vw, 891px\" \/><\/figure>\n\n\n\n<p>Meu erro foi ter come\u00e7ado pela documenta\u00e7\u00e3o (Documentation) e n\u00e3o pelo tour (Tour of Go). Se estiver tendo seu primeiro contato sugiro come\u00e7ar pelo <a href=\"https:\/\/go.dev\/tour\/welcome\/1\">Tour<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Come\u00e7ando pelo Tour of Go &#8211; <a href=\"https:\/\/go.dev\/tour\">https:\/\/go.dev\/tour<\/a><\/h4>\n\n\n\n<p>Tem a profundidade de uma moeda mas te prepara para dar os primeiros passos na linguagem pois ao contr\u00e1rio da documenta\u00e7\u00e3o oficial, <strong>\u00e9 linear.<\/strong> \u00c9 um destes tutoriais interativos nos quais h\u00e1 uma explica\u00e7\u00e3o do lado esquerdo e c\u00f3digo para voc\u00ea experimentar do lado direito.<\/p>\n\n\n\n<p>Em aproximadamente uma hora (no m\u00e1ximo duas se voc\u00ea estiver brincando com a linguagem no processo). Recomendo que voc\u00ea fa\u00e7a inteiro (preferencialmente experimentando ao m\u00e1ximo).<\/p>\n\n\n\n<p>H\u00e1 tradu\u00e7\u00e3o para o Portugu\u00eas do Brasil, mas se voc\u00ea sabe ingl\u00eas recomendo que evite esta tradu\u00e7\u00e3o pois encontrei algumas coisas como as expostas nos prints abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"634\" height=\"242\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image-1.png\" alt=\"\" class=\"wp-image-4137\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image-1.png 634w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image-1-300x115.png 300w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><figcaption class=\"wp-element-caption\">pode &#8220;close&#8221;?<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"616\" height=\"508\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image-2.png\" alt=\"\" class=\"wp-image-4138\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image-2.png 616w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/image-2-300x247.png 300w\" sizes=\"(max-width: 616px) 100vw, 616px\" \/><figcaption class=\"wp-element-caption\">segmento significa &#8220;thread&#8221;?<\/figcaption><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Caminho alternativo ao Tour of Go &#8211; v\u00eddeo<\/h5>\n\n\n\n<p>N\u00e3o gosto de v\u00eddeos para estes primeiros contatos com linguagens mas a documenta\u00e7\u00e3o oficial indica este v\u00eddeo (em ingl\u00eas) cheio de chav\u00f5es (musiquinha feliz, introdu\u00e7\u00e3o enche lingui\u00e7a&#8230;) que talvez possa te ajudar. N\u00e3o \u00e9 ruim, mas pessoalmente n\u00e3o gosto (me falta paci\u00eancia).<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"ast-oembed-container \" style=\"height: 100%;\"><iframe loading=\"lazy\" title=\"Go Programming Language Tutorial | Golang Tutorial For Beginners | Go Language Training | Edureka\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/Q0sKAMal4WQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Indo para a documenta\u00e7\u00e3o oficial &#8211; <a href=\"https:\/\/go.dev\/doc\/\">https:\/\/go.dev\/doc\/<\/a><\/h4>\n\n\n\n<p>Ap\u00f3s ter seguido os tutorias b\u00e1sicos (ao menos o interativo) a documenta\u00e7\u00e3o oficial fornece o aprofundamento que precisava para poder entender os detalhes da linguagem que far\u00e3o toda a diferen\u00e7a. Seguem aqui ent\u00e3o os links da documenta\u00e7\u00e3o que mais me ajudaram.<\/p>\n\n\n\n<p>Um dos pontos fotes do Go \u00e9 o modo como lida com concorr\u00eancia. Dado que este \u00e9 apenas seu primeiro contato e os projetos iniciais s\u00e3o bem simples, n\u00e3o irei tocar nestes assuntos (busque por &#8220;goroutines&#8221; ;) ).<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">O b\u00e1sico sobre m\u00f3dulos<\/h5>\n\n\n\n<p>Se voc\u00ea v\u00eam do Java ou .net o conceito de pacotes do Go pode te parecer confuso: n\u00e3o por ser complexo, mas por ser simples. Ent\u00e3o leia estes dois links na sequ\u00eancia:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/go.dev\/doc\/tutorial\/getting-started.html\">Tutorial: getting started<\/a> &#8211; \u00e9 um Hello World que vai ser usado adiante, fa\u00e7a s\u00f3 pra treinar.<\/li>\n\n\n\n<li><a href=\"https:\/\/go.dev\/doc\/tutorial\/create-module\">Tutorial: Create a Go Module<\/a> &#8211; voc\u00ea vai criar seu primeiro m\u00f3dulo<\/li>\n\n\n\n<li><a href=\"https:\/\/go.dev\/doc\/tutorial\/workspaces\">Getting started with multi-module workspaces<\/a> &#8211; voc\u00ea definitivamente vai sentir falta de n\u00e3o conhecer o conceito de workspaces do Go quando for implementar seus projetos maiores (sofri um pouco com isto), ent\u00e3o preste muita aten\u00e7\u00e3o neste link.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">Organizando seu c\u00f3digo<\/h5>\n\n\n\n<p>Voc\u00ea que v\u00eam do Java vai sentir saudades do <a href=\"https:\/\/maven.apache.org\">Maven<\/a> em seu primeiro contato. Ao escrever sua primeira aplica\u00e7\u00e3o que envolva mais de um arquivo esta saudade ir\u00e1 apertar. Este link (<a href=\"https:\/\/go.dev\/doc\/code\">How to Write Go Code<\/a>)  te ensina como seu c\u00f3digo fonte deve estar organizado e tamb\u00e9m tornar\u00e1 mais clara a distin\u00e7\u00e3o entre m\u00f3dulo (module) e pacote (package). (um m\u00f3dulo cont\u00e9m pacotes ;) )<\/p>\n\n\n\n<p>Outro link que vai ajudar \u00e9 este: <a href=\"https:\/\/go.dev\/doc\/modules\/layout\">Organizing a Go module<\/a>. <\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Effective Go e FAQ<\/h5>\n\n\n\n<p>Vai te ajudar bastante tamb\u00e9m conhecer as conven\u00e7\u00f5es adotadas pela linguagem. O link &#8220;<a href=\"https:\/\/go.dev\/doc\/effective_go\">Effective Go<\/a>&#8221; me ajudou a responder diversas d\u00favidas simples mas que podem tomar bastante seu tempo, tais como: quando uso ponto e v\u00edrgula? Como lido com erros? E estas fun\u00e7\u00f5es que retornam mais de um valor como resultado?<\/p>\n\n\n\n<p>O <a href=\"https:\/\/go.dev\/doc\/faq\">FAQ<\/a> tamb\u00e9m tem coisas \u00fateis. N\u00e3o acho que voc\u00ea deva l\u00ea-lo de cabo a rabo, mas pelo menos dar uma passada de olhos pelo \u00edndice j\u00e1 ajuda a descobrir d\u00favidas que voc\u00ea ainda n\u00e3o sabe que tem.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Biblioteca padr\u00e3o &#8211; <a href=\"https:\/\/pkg.go.dev\/std\">https:\/\/pkg.go.dev\/std<\/a><\/h4>\n\n\n\n<p>Em diversos momentos voc\u00ea ler\u00e1 na documenta\u00e7\u00e3o que a biblioteca padr\u00e3o \u00e9 bastante rica e bla bla bla. Ent\u00e3o \u00e9 interessante ver os m\u00f3dulos que comp\u00f5em a biblioteca pra se ter uma no\u00e7\u00e3o do que de fato est\u00e1 ali. E tem coisas <strong>muito legais<\/strong>, tais como fun\u00e7\u00f5es para se gerar HTML, JSON, fun\u00e7\u00f5es de hash, logging, testes, etc.<\/p>\n\n\n\n<p>Fica bem claro que \u00e9 poss\u00edvel, por exemplo, escrever uma aplica\u00e7\u00e3o web sem um framework externo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Material para desenvolvimento web<\/h4>\n\n\n\n<p>At\u00e9 este momento tudo o que expus satisfaz o primeiro objetivo do meu plano de estudos. Para o segundo objetivo (a API REST) segue aqui algum material com avisos.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Frameworks<\/h5>\n\n\n\n<p>Todos que vi at\u00e9 agora achei muito parecidos, me lembrando muito micro frameworks como <a href=\"https:\/\/palletsprojects.com\/p\/flask\/\">Flask<\/a>, por exemplo, e pelo que pude aprender at\u00e9 agora todos usam inclusive como base a biblioteca padr\u00e3o do Go para tal.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Gin Web Framework &#8211; <a href=\"https:\/\/gin-gonic.com\/\">https:\/\/gin-gonic.com\/<\/a><\/h6>\n\n\n\n<p>O framework que adotei para o segundo objetivo foi o Gin e por uma raz\u00e3o bem boba: segui o tutorial que estava presente na pr\u00f3pria documenta\u00e7\u00e3o oficial da linguagem que pode ser acessado neste link: <a href=\"https:\/\/go.dev\/doc\/tutorial\/web-service-gin\">Tutorial: Developing a RESTful API with Go and Gin<\/a>.<\/p>\n\n\n\n<p>A documenta\u00e7\u00e3o do Gin \u00e9 p\u00e9ssima, e voc\u00ea pode acessar neste <a href=\"https:\/\/gin-gonic.com\/docs\/\">link<\/a>. Voc\u00ea encontrar\u00e1 um quickstart extremamente b\u00e1sico com um<a href=\"https:\/\/gin-gonic.com\/docs\/quickstart\/\"> &#8220;hello world&#8221;<\/a> e n\u00e3o muito mais al\u00e9m disto.<\/p>\n\n\n\n<p>Infelizmente os autores do framework acreditam que uma boa forma de se ensinar \u00e9 a partir de exemplos, ent\u00e3o voc\u00ea ter\u00e1 de navegar por eles, que podem ser vistos neste <a href=\"https:\/\/gin-gonic.com\/docs\/examples\/\">link<\/a>.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Um v\u00eddeo interessante<\/h6>\n\n\n\n<p>Minha impress\u00e3o de que os frameworks que vi eram basicamente sempre a mesma coisa se confirmou neste v\u00eddeo: <a href=\"https:\/\/www.youtube.com\/watch?v=JECZTdEJnOI \">https:\/\/www.youtube.com\/watch?v=JECZTdEJnOI <\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"ast-oembed-container \" style=\"height: 100%;\"><iframe loading=\"lazy\" title=\"The TRUTH About Golang Backend Frameworks\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/JECZTdEJnOI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Primeiras impress\u00f5es<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Ferramentas<\/h2>\n\n\n\n<p>N\u00e3o senti falta de nada e at\u00e9 agora tudo o que usei achei excelente.  Tenho usado o VS Code como IDE e os plugins recomendados funcionam perfeitamente.<\/p>\n\n\n\n<p>Para facilitar minha vida instalei Go usando o asdf com o plugin golang. O Asdf nos permite ter instala\u00e7\u00f5es concorrentes de basicamente todas as ferramentas de desenvolvimento que voc\u00ea pode imaginar. Se ainda n\u00e3o conhece, recomendo que leia<a href=\"https:\/\/itexto.com.br\/gerencie-todas-ou-quase-ferramentas-de-desenvolvimento-com-asdf\/\"> este tutorial <\/a>que escrevi a respeito no site da itexto.<\/p>\n\n\n\n<p>As ferramentas de linha de comando do Go nos permitem tamb\u00e9m fazer tudo o que precisamos \u00e9 como se o Maven tivesse um filho com o Cargo do Rust:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Gerenciar depend\u00eancias (muito parecido com o <a href=\"https:\/\/doc.rust-lang.org\/cargo\/\">Cargo<\/a> do Rust).<\/li>\n\n\n\n<li>Compilar os projetos (\u00f3bvio!)<\/li>\n\n\n\n<li>Executar testes<\/li>\n\n\n\n<li>Criar m\u00f3dulos<\/li>\n\n\n\n<li>Buscar erros no projeto<\/li>\n\n\n\n<li>Instalar ferramentas adicionais (h\u00e1 v\u00e1rias!)<\/li>\n<\/ul>\n\n\n\n<p>A velocidade do compilador impressiona. \u00c9 <strong>muito r\u00e1pido<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A linguagem<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Orienta\u00e7\u00e3o a objetos? <\/h3>\n\n\n\n<p>Aqui percebi que com o tempo realmente fui me tornando uma pessoa viciada em orienta\u00e7\u00e3o a objetos (Kico de 15 anos atr\u00e1s olha pra mim e diz: <a href=\"https:\/\/devkico.itexto.com.br\/?p=172\">n\u00e3o te disse???<\/a>). Go n\u00e3o \u00e9 orientado a objetos tal como estamos acostumados no caso do Java ou C# por exemplo (<a href=\"https:\/\/www.youtube.com\/watch?v=7D1W15cR_Hc\">este v\u00eddeo<\/a> \u00e9 interessante).<\/p>\n\n\n\n<p>H\u00e1 sim objetos, mas n\u00e3o h\u00e1 classes ou heran\u00e7a: a norma claramente \u00e9 programa\u00e7\u00e3o procedural aqui. E sabe de uma coisa? Confesso que senti al\u00edvio enquanto escrevia meus mini projetos e via como \u00e9 poss\u00edvel escrever c\u00f3digo muito mais simples para estes contextos (aplica\u00e7\u00f5es simples) sem orienta\u00e7\u00e3o a objetos (o <a href=\"https:\/\/devkico.itexto.com.br\/?p=1324\">Kico de dez anos atr\u00e1s<\/a> tamb\u00e9m me cutucou aqui).<\/p>\n\n\n\n<p>(Orienta\u00e7\u00e3o a Objetos n\u00e3o \u00e9 uma boa pr\u00e1tica de desenvolvimento: \u00e9 um paradigma de programa\u00e7\u00e3o que tem seu lugar de aplica\u00e7\u00e3o. Infelizmente isto n\u00e3o \u00e9 claro pra muita gente ainda hoje&#8230;)<\/p>\n\n\n\n<p>H\u00e1 polimorfismo, e o conceito de interfaces aqui \u00e9 muito interessante. \u00c9 vista como algo impl\u00edcito (voc\u00ea n\u00e3o precisa daquelas instru\u00e7\u00f5es <code>implements<\/code>). <a href=\"https:\/\/devopedia.org\/duck-typing#:~:text=Duck%20Typing%20is%20a%20way,methods%2Fattributes%20called%20on%20it.\">Duck typing<\/a> basicamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Simples!<\/h3>\n\n\n\n<p>N\u00e3o \u00e9 exagero dizer que se voc\u00ea terminar o Tour of Go vai ter o ferramental necess\u00e1rio para implementar tudo o que me propus nesta imers\u00e3o. A linguagem \u00e9 realmente <strong>muito simples e torna simples coisas que s\u00e3o complexas em outras.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Um modelo de strings simples. N\u00e3o \u00e9 algo complicado como o que temos em C ou ainda mais complicado como o que temos em Rust (<a href=\"https:\/\/www.youtube.com\/watch?v=CpvzeyzgQdw&amp;t\">este v\u00eddeo<\/a> sobre strings em Rust \u00e9 muito \u00fatil).<\/li>\n\n\n\n<li>Voc\u00ea tem ponteiros que s\u00e3o f\u00e1ceis de entender.<\/li>\n\n\n\n<li>Um esquema de pacotes e m\u00f3dulos simples de entender (ao contr\u00e1rio do que temos em Rust que apesar de poderoso leva um tempo at\u00e9 pegar o jeito). <\/li>\n\n\n\n<li>Um modelo de dados muito b\u00e1sico: os tipos num\u00e9ricos que precisamos (inclusive unsigned, algo que sempre senti muita falta no Java (pense em integra\u00e7\u00f5es de baixo n\u00edvel que voc\u00ea vai me entender), um \u00fanico tipo de string, structures (que s\u00f3 entraram no Java recentemente), maps, slices (como listas) e ponteiros (que j\u00e1 falei)<\/li>\n<\/ul>\n\n\n\n<p>A sintaxe tamb\u00e9m \u00e9 <strong>muito simples<\/strong>. Me lembra Groovy, mas ainda mais simples, o que me leva a outro ponto importante.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Curva de aprendizado<\/h3>\n\n\n\n<p>Em um dia usando apenas a documenta\u00e7\u00e3o oficial consegui cumprir os dois objetivos que me propus sem nenhum conhecimento pr\u00e9vio sobre a linguagem. <strong>Importante:<\/strong> estou falando <strong>sobre mim, que atuo na \u00e1rea desde 1996 e j\u00e1 passei por diversas linguagens e ambientes de desenvolvimento<\/strong>, mas normalmente quando vou aprender algo novo do zero, com o tempo que tenho dispon\u00edvel hoje, leva pelo menos uma semana.<\/p>\n\n\n\n<p>\u00c9 imposs\u00edvel para mim n\u00e3o fazer aqui uma compara\u00e7\u00e3o com Rust. N\u00e3o acredito que em uma semana voc\u00ea consiga se tornar realmente produtivo na linguagem, mas com Go, se for para desenvolver inicialmente ferramentas como o primeiro objetivo que me propus, acredito que sim.<\/p>\n\n\n\n<p>E \u00e9 muito mais f\u00e1cil treinar uma equipe em Go que em Rust por outra raz\u00e3o: a simplicidade da documenta\u00e7\u00e3o tamb\u00e9m. Experimente tentar aprender Rust pelo material indicado pela comunidade (o livro <a href=\"https:\/\/doc.rust-lang.org\/book\/\">&#8220;The Rust Programming Language&#8221;<\/a>) e compare com o guia que expus neste post. <\/p>\n\n\n\n<p>(Antes que chegue um fan\u00e1tico aqui: n\u00e3o estou dizendo que Rust seja ruim, mas sim que sua curva de aprendizado \u00e9 um problema real)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testes<\/h3>\n\n\n\n<p>Assim como Rust, Go tamb\u00e9m tr\u00e1s as funcionalidades necess\u00e1rias para que voc\u00ea possa escrever seus testes unit\u00e1rios e integrados. Tem inclusive recursos bem legais como por exemplo a escrita de benchmarks, fuzzing (passagem de valores aleat\u00f3rios para fun\u00e7\u00f5es) e algumas outras funcionaliddes.<\/p>\n\n\n\n<p>Se voc\u00ea ler a documenta\u00e7\u00e3o oficial encontrar\u00e1 links como este (<a href=\"https:\/\/go.dev\/doc\/tutorial\/add-a-test\">Add a test<\/a> no Tutorial dos m\u00f3dulos que indico no in\u00edcio). Mas sabe o que n\u00e3o est\u00e1 inclu\u00eddo nas bibliotecas? Asser\u00e7\u00f5es! Voc\u00ea ter\u00e1 de usar projetos <a href=\"https:\/\/github.com\/stretchr\/testify\">como este<\/a> para que sejam inclu\u00eddas em seus testes.<\/p>\n\n\n\n<p>Aqui est\u00e1 o <a href=\"https:\/\/pkg.go.dev\/testing@go1.21.1\">ink<\/a> para a documenta\u00e7\u00e3o do m\u00f3dulo testing, que \u00e9 o oficial para a execu\u00e7\u00e3o de testes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Acesso a bases de dados relacionais<\/h3>\n\n\n\n<p>Na biblioteca padr\u00e3o o m\u00f3dulo database (dividido nos pacotes <a href=\"https:\/\/pkg.go.dev\/database\/sql@go1.21.1\">sql<\/a> e <a href=\"https:\/\/pkg.go.dev\/database\/sql\/driver@go1.21.1\">sql\/driver<\/a>) me chamaram a aten\u00e7\u00e3o. Temos ali padronizadas todas as interfaces a serrem seguidas pelos fornecedores de bases de dados relacionais usando um modelo <strong>muito parecido<\/strong> com o que temos no JDBC do Java.<\/p>\n\n\n\n<p>Este \u00e9 um diferencial importante em rela\u00e7\u00e3o ao Rust que, at\u00e9 onde sei, ainda n\u00e3o tem algo similar padronizado na pr\u00f3pria linguagem. E por que isto \u00e9 importante? Por que facilita muito a ado\u00e7\u00e3o da linguagem no ambiente corporativo no qual n\u00e3o raro o SGBD relacional \u00e9 Rei.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Come\u00e7ando<\/h1>\n\n\n\n<p>\u00c9 raro eu ter uma primeira impress\u00e3o t\u00e3o positiva de uma linguagem de programa\u00e7\u00e3o (a \u00faltima foi Groovy): n\u00e3o acredito que seja a primeira impress\u00e3o que fica, mas sim a \u00faltima, quando os problemas reais v\u00e3o se mostrando conforme desafios maiores surgem.<\/p>\n\n\n\n<p>A simplicidade da linguagem associada a uma biblioteca padr\u00e3o que me fornece tudo o que preciso pra come\u00e7ar a trabalhar, assim como um ferramental que j\u00e1 v\u00eam praticamente pronto ap\u00f3s a instala\u00e7\u00e3o colocou Go pra mim como uma alternativa muito interessante para os cen\u00e1rios que mencionei no in\u00edcio do post.<\/p>\n\n\n\n<p>Na minha opini\u00e3o, quanto menor for o tempo que voc\u00ea tiver para treinar sua equipe em uma linguagem para estes cen\u00e1rios, maior a probabilidade de sua escolha ser Go ao inv\u00e9s de Rust.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quais s\u00e3o as minhas primeiras impress\u00f5es sobre Go e meu planejamento de estudo sobre o assunto<\/p>\n","protected":false},"author":1,"featured_media":4135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[136,161],"tags":[162,163],"class_list":["post-4134","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arquitetura-de-software","category-go","tag-go","tag-golang"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Meus primeiros passos com Go (inclui bibliografia comentada) - \/dev\/Kico<\/title>\n<meta name=\"description\" content=\"Minhas primeiras impress\u00f5es sobre Go e o plano de estudos que segui para minha imers\u00e3o na linguagem.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=4134\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Minhas primeiras impress\u00f5es sobre Go e um plano de estudos para come\u00e7ar\" \/>\n<meta property=\"og:description\" content=\"Minhas primeiras impress\u00f5es sobre Go e o plano de estudos que segui para minha imers\u00e3o na linguagem.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=4134\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-01T23:34:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-01T23:34:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png\" \/>\n\t<meta property=\"og:image:width\" content=\"540\" \/>\n\t<meta property=\"og:image:height\" content=\"352\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Minhas primeiras impress\u00f5es sobre Go e meu plano de estudos para a imers\u00e3o no assunto\" \/>\n<meta name=\"twitter:description\" content=\"Minhas primeiras impress\u00f5es sobre Go e o plano de estudos que segui para minha imers\u00e3o na linguagem.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=4134\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=4134\",\"name\":\"Meus primeiros passos com Go (inclui bibliografia comentada) - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=4134#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=4134#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png\",\"datePublished\":\"2023-10-01T23:34:54+00:00\",\"dateModified\":\"2023-10-01T23:34:58+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"description\":\"Minhas primeiras impress\u00f5es sobre Go e o plano de estudos que segui para minha imers\u00e3o na linguagem.\",\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=4134#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=4134\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=4134#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png\",\"width\":540,\"height\":352},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=4134#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Meus primeiros passos com Go (inclui bibliografia comentada)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Meus primeiros passos com Go (inclui bibliografia comentada) - \/dev\/Kico","description":"Minhas primeiras impress\u00f5es sobre Go e o plano de estudos que segui para minha imers\u00e3o na linguagem.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=4134","og_locale":"pt_BR","og_type":"article","og_title":"Minhas primeiras impress\u00f5es sobre Go e um plano de estudos para come\u00e7ar","og_description":"Minhas primeiras impress\u00f5es sobre Go e o plano de estudos que segui para minha imers\u00e3o na linguagem.","og_url":"https:\/\/devkico.itexto.com.br\/?p=4134","og_site_name":"\/dev\/Kico","article_published_time":"2023-10-01T23:34:54+00:00","article_modified_time":"2023-10-01T23:34:58+00:00","og_image":[{"width":540,"height":352,"url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png","type":"image\/png"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_title":"Minhas primeiras impress\u00f5es sobre Go e meu plano de estudos para a imers\u00e3o no assunto","twitter_description":"Minhas primeiras impress\u00f5es sobre Go e o plano de estudos que segui para minha imers\u00e3o na linguagem.","twitter_image":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"14 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=4134","url":"https:\/\/devkico.itexto.com.br\/?p=4134","name":"Meus primeiros passos com Go (inclui bibliografia comentada) - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=4134#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=4134#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png","datePublished":"2023-10-01T23:34:54+00:00","dateModified":"2023-10-01T23:34:58+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"description":"Minhas primeiras impress\u00f5es sobre Go e o plano de estudos que segui para minha imers\u00e3o na linguagem.","breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=4134#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=4134"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=4134#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png","width":540,"height":352},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=4134#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Meus primeiros passos com Go (inclui bibliografia comentada)"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2023\/10\/kico_e_go.png","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4134"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4134"}],"version-history":[{"count":2,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4134\/revisions"}],"predecessor-version":[{"id":4140,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4134\/revisions\/4140"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/4135"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}