<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lucas Dasial</title>
    <description>The latest articles on DEV Community by Lucas Dasial (@lucasdasial).</description>
    <link>https://dev.to/lucasdasial</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F677215%2Fceebcb1b-ad6b-4bd3-b5e1-4025b3061927.png</url>
      <title>DEV Community: Lucas Dasial</title>
      <link>https://dev.to/lucasdasial</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lucasdasial"/>
    <language>en</language>
    <item>
      <title>Entenda Ponteiros, simples e facil com Go</title>
      <dc:creator>Lucas Dasial</dc:creator>
      <pubDate>Sat, 15 Aug 2026 23:04:44 +0000</pubDate>
      <link>https://dev.to/lucasdasial/entenda-ponteiros-simples-e-facil-com-go-2nog</link>
      <guid>https://dev.to/lucasdasial/entenda-ponteiros-simples-e-facil-com-go-2nog</guid>
      <description>&lt;p&gt;Lidar com ponteiros pela primeira vez assusta quem vem de linguagens como JavaScript, Python ou Java, onde a gestão de memória é automática&lt;/p&gt;

&lt;p&gt;Mas a ideia é mais simples do que parece.&lt;/p&gt;

&lt;h3&gt;
  
  
  O que são ponteiros?
&lt;/h3&gt;

&lt;p&gt;Toda variável ocupa um espaço na memória, e esse espaço possui um endereço.&lt;/p&gt;

&lt;p&gt;Um ponteiro é uma variável que guarda o &lt;strong&gt;endereço de outra variável&lt;/strong&gt;, em vez de guardar diretamente o seu valor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;

&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;

&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;// 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;x&lt;/code&gt; guarda &lt;code&gt;10&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;p&lt;/code&gt; guarda o endereço de &lt;code&gt;x&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;E &lt;code&gt;*p&lt;/code&gt; acessa o valor que está naquele endereço.&lt;/p&gt;

&lt;h3&gt;
  
  
  Operadores Cruciais
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;&amp;amp;&lt;/code&gt;: Descobre o "endereço de" uma variável.&lt;br&gt;
&lt;code&gt;*&lt;/code&gt;: Acessa ou modifica o "valor apontado por" um ponteiro. &lt;br&gt;
&lt;em&gt;Tambem é sintaxe para indicar uma variavel é do tipo &lt;code&gt;ponteiro&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Por que usar ponteiros?
&lt;/h3&gt;

&lt;p&gt;Principalmente para trabalhar com a &lt;strong&gt;mesma instância&lt;/strong&gt; de um dado, evitando cópias desnecessárias.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;changeName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"João"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Lucas"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;changeName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;// João&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A função recebeu o endereço do &lt;code&gt;user&lt;/code&gt;, então modificou o objeto original.&lt;/p&gt;

&lt;p&gt;Sem ponteiro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;changeName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"João"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A função receberia uma cópia e o &lt;code&gt;user&lt;/code&gt; original não seria alterado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Um exemplo real
&lt;/h3&gt;

&lt;p&gt;Em uma API, podemos criar uma única instância do banco:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"postgres"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dsn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;userRepo&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;NewUserRepository&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;orderRepo&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;NewOrderRepository&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E os repositories podem compartilhar a mesma instância:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;UserRepository&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;db&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DB&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;              *sql.DB
                 │
        ┌────────┴────────┐
        ↓                 ↓
 UserRepository     OrderRepository
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia principal que estou levando do estudo de Go:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ponteiros permitem trabalhar com a mesma instância de um dado, em vez de necessariamente criar cópias.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  E uma regra prática:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use valor por padrão. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use ponteiro quando precisar: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;compartilhar/modificar a mesma instância, &lt;/li&gt;
&lt;li&gt;representar &lt;code&gt;nil/null&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;evitar uma cópia relevante ou muito grande.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>backend</category>
      <category>go</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Jeito facil de utilizar PostgreSQL com docker</title>
      <dc:creator>Lucas Dasial</dc:creator>
      <pubDate>Sun, 27 Aug 2023 00:35:36 +0000</pubDate>
      <link>https://dev.to/lucasdasial/jeito-facil-de-utilizar-postgresql-com-docker-2ppb</link>
      <guid>https://dev.to/lucasdasial/jeito-facil-de-utilizar-postgresql-com-docker-2ppb</guid>
      <description>&lt;p&gt;No dia a dia de um desenvolvedor é muito comum precisarmos rodar projetos de terceiros e para isso precisamos instalar e configurar bancos de dados em nossas máquinas. Há também casos em que já temos algum banco rodando localmente e precisamos criar um novo, isso acaba dificultando a configuração.&lt;/p&gt;

&lt;p&gt;Para contonar esse problema podemos utilizar o docker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 1: Instalando o Docker&lt;/strong&gt;&lt;br&gt;
Se você ainda não tem o Docker instalado, visite o site oficial do Docker (&lt;a href="https://www.docker.com/"&gt;https://www.docker.com/&lt;/a&gt;) e siga as instruções para baixar e instalar a versão para o seu sistema operacional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 2: Baixando a Imagem do PostgreSQL&lt;/strong&gt;&lt;br&gt;
O Docker Hub é o repositório oficial de imagens do Docker, onde você pode encontrar uma ampla variedade de imagens prontas para uso. Para baixar a imagem do PostgreSQL, abra o terminal e execute o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker pull postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso baixará a versão mais recente da imagem do PostgreSQL para o seu sistema. Esse comando também serve para baixar outras imagens como por exemplo cimg/postgres ou mysql.&lt;/p&gt;

&lt;p&gt;Caso queira listar as imagens do seu docker você pode utilizar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker imagens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Passo 3: Criando um Contêiner PostgreSQL&lt;/strong&gt;&lt;br&gt;
Com a imagem do PostgreSQL baixada, você pode criar um contêiner com base nessa imagem. Utilize o seguinte comando para criar um contêiner com postgres:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name nome-container -e POSTGRES_PASSWORD=minhasenha -d -p 5432:5432 postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pronto! facil né?&lt;/p&gt;

&lt;p&gt;Com isso o container irá ser levantado e estará pronto para ser utilizado. Para ter certeza que ocorreu tudo certo,  em seu terminal irá aparecer o id do container que acabou de levantar.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Explicações sobre o comando.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;--name : serve para você nomear como quer identificar o seu container&lt;/p&gt;

&lt;p&gt;-d : serve para que o container fique rodando em background liberando o terminal onde executou o comando fique livre para utilização.&lt;/p&gt;

&lt;p&gt;-p : serve para você mapear a porta em que ficará acessivel fora do container e para qual porta será repassada internamente do container.&lt;/p&gt;

&lt;p&gt;-e: serve para você definir variáveis de ambiente como por exemplo nome do banco (POSTGRES_DB), nome de usuario (POSTGRES_USER) e senha do banco (POSTGRES_PASSWORD)&lt;/p&gt;

&lt;p&gt;caso você não informe essas variáves, por padrão o postgres usará o nome de usuario como _postgres _e definirá o nome do banco com mesmo nome de usuário.&lt;/p&gt;

&lt;p&gt;Lembre-se dessas informações pois irá precisar para se autenticar no banco quando for acessar o seu SGBD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gerenciando o Contêiner PostgreSQL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agora que você sabe como criar um container postgres, você pode criar vários com própositos e projetos diferentes.&lt;/p&gt;

&lt;p&gt;Para listar os contêiners criado, utilizar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para parar o contêiner, você pode executar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker stop nome-do-container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para iniciar novamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker start nome-do-container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para apagar um container utilize:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker kill nome-do-container ou ID
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Lembre-se de que, ao parar ou remover o contêiner, você perderá todos os dados armazenados nele, a menos que tenha configurado um volume para persistência dos dados.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Executar o PostgreSQL no Docker oferece uma maneira eficiente e portável de desenvolver e testar aplicativos que dependem desse banco de dados. Ao seguir este guia, você estará pronto para criar, executar e gerenciar um contêiner PostgreSQL em pouco tempo. Isso simplificará seu fluxo de trabalho de desenvolvimento e permitirá que você experimente com mais facilidade.&lt;/p&gt;

&lt;p&gt;fontes de referências:&lt;br&gt;
&lt;a href="https://hub.docker.com/_/postgres"&gt;https://hub.docker.com/_/postgres&lt;/a&gt;&lt;br&gt;
&lt;a href="https://stack.desenvolvedor.expert/appendix/docker/comandos.html"&gt;https://stack.desenvolvedor.expert/appendix/docker/comandos.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>docker</category>
      <category>postgres</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
