<?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: Maycon Jesus</title>
    <description>The latest articles on DEV Community by Maycon Jesus (@mayconjesus).</description>
    <link>https://dev.to/mayconjesus</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1060878%2Fe161d6a9-b3bc-4ef1-bfff-f4a6c6c9c93b.png</url>
      <title>DEV Community: Maycon Jesus</title>
      <link>https://dev.to/mayconjesus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mayconjesus"/>
    <language>en</language>
    <item>
      <title>Arrays e Slices em go</title>
      <dc:creator>Maycon Jesus</dc:creator>
      <pubDate>Mon, 03 Mar 2025 04:56:18 +0000</pubDate>
      <link>https://dev.to/mayconjesus/arrays-e-slices-em-go-2fec</link>
      <guid>https://dev.to/mayconjesus/arrays-e-slices-em-go-2fec</guid>
      <description>&lt;h2&gt;
  
  
  Arrays (Tamanho Fixo)
&lt;/h2&gt;

&lt;p&gt;Em Go, arrays têm tamanho fixo, ou seja, o número de elementos não pode ser alterado depois que o array é criado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exemplo de Array com Tamanho Fixo:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;sites&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;O array &lt;code&gt;sites&lt;/code&gt; pode armazenar exatamente 4 elementos do tipo &lt;code&gt;string&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;O tamanho do array é uma parte de seu tipo, então arrays com diferentes tamanhos são considerados tipos diferentes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Slices (Tamanho Dinâmico)
&lt;/h2&gt;

&lt;p&gt;Diferente dos arrays, slices podem ter tamanho variável e são mais flexíveis. Eles são usados com mais frequência devido à sua capacidade de crescer e diminuir dinamicamente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exemplo de Slice (Tamanho Dinâmico):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;sites&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sites&lt;/code&gt; é um slice de &lt;code&gt;string&lt;/code&gt;, sem um tamanho fixo, que pode ser redimensionado conforme necessário.&lt;/li&gt;
&lt;li&gt;Diferente dos arrays, slices não são definidos com um número fixo entre os colchetes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Inicializando Arrays e Slices com Itens
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Inicializando Arrays com Tamanho Fixo:
&lt;/h3&gt;

&lt;p&gt;Quando você inicializa um array com valores, o tamanho deve ser explicitamente definido.&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;var&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"aaa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bbb"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Aqui, o array &lt;code&gt;strs&lt;/code&gt; tem exatamente 2 elementos do tipo &lt;code&gt;string&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Inicializando Slices com Tamanho Dinâmico:
&lt;/h3&gt;

&lt;p&gt;Slices podem ser inicializados sem precisar especificar um tamanho fixo entre os colchetes.&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;var&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"aaa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bbb"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Neste caso, &lt;code&gt;strs&lt;/code&gt; é um slice de &lt;code&gt;string&lt;/code&gt; com dois elementos, mas o número de elementos pode crescer ou diminuir ao longo do tempo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Métodos Importantes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;append()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;O método &lt;code&gt;append()&lt;/code&gt; é usado para adicionar elementos a um slice. Se o slice atingir sua capacidade máxima, o &lt;code&gt;append()&lt;/code&gt; automaticamente cria um novo slice com maior capacidade.&lt;/p&gt;

&lt;h4&gt;
  
  
  Exemplo de uso de &lt;code&gt;append&lt;/code&gt;:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"aaa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bbb"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"ccc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"ddd"&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;strs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;// Saída: [aaa bbb ccc ddd]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Aqui, dois novos elementos são adicionados ao slice &lt;code&gt;strs&lt;/code&gt;. O slice cresce dinamicamente conforme necessário.&lt;/li&gt;
&lt;li&gt;A função &lt;code&gt;append()&lt;/code&gt; sempre retorna um novo slice, pois o slice original pode ter sua capacidade aumentada.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;len()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;O método &lt;code&gt;len()&lt;/code&gt; retorna o número de elementos no slice (ou array).&lt;/p&gt;

&lt;h4&gt;
  
  
  Exemplo de uso de &lt;code&gt;len&lt;/code&gt;:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"aaa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bbb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"ccc"&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="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c"&gt;// Saída: 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;O &lt;code&gt;len(strs)&lt;/code&gt; retorna &lt;code&gt;3&lt;/code&gt;, que é o número de elementos atualmente no slice &lt;code&gt;strs&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;code&gt;cap()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;O método &lt;code&gt;cap()&lt;/code&gt; retorna a capacidade total do slice, ou seja, o número de elementos que ele pode armazenar antes de precisar ser realocado.&lt;/p&gt;

&lt;h4&gt;
  
  
  Exemplo de uso de &lt;code&gt;cap&lt;/code&gt;:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;strs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"aaa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"bbb"&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="nb"&gt;cap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strs&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c"&gt;// Saída: 2 (dependendo do tamanho inicial do slice)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A função &lt;code&gt;cap(strs)&lt;/code&gt; retorna a capacidade do slice &lt;code&gt;strs&lt;/code&gt;, que pode ser diferente do número de elementos (retornado por &lt;code&gt;len()&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Em um slice, a capacidade pode ser maior que o número de elementos, permitindo que o slice cresça sem realocações imediatas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Diferenças Principais
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arrays&lt;/strong&gt;: Têm tamanho fixo e o tamanho é parte do tipo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slices&lt;/strong&gt;: Têm tamanho dinâmico e são mais flexíveis para o uso diário em Go. Slices podem crescer conforme necessário usando o método &lt;code&gt;append()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resumo de Funções
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;append(slice, elements...)&lt;/code&gt;&lt;/strong&gt;: Adiciona elementos ao slice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;len(slice)&lt;/code&gt;&lt;/strong&gt;: Retorna o número de elementos no slice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;cap(slice)&lt;/code&gt;&lt;/strong&gt;: Retorna a capacidade do slice.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>go</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>braziliandevs</category>
    </item>
  </channel>
</rss>
