<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Maycon Jesus Blog]]></title><description><![CDATA[Me chamo Maycon Jesus e sou Engenheiro de Software brasileiro. Neste blog compartilho conhecimentos, tutoriais e insights sobre programação e desenvolvimento de software.]]></description><link>https://blog.mayconjesus.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 19 May 2026 10:12:13 GMT</lastBuildDate><atom:link href="https://blog.mayconjesus.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Arrays e Slices em Golang]]></title><description><![CDATA[Arrays (Tamanho Fixo)
Em Go, arrays têm tamanho fixo, ou seja, o número de elementos não pode ser alterado depois que o array é criado.
Exemplo de Array com Tamanho Fixo:
var sites [4]string


O array sites pode armazenar exatamente 4 elementos do ti...]]></description><link>https://blog.mayconjesus.dev/arrays-e-slices-em-golang</link><guid isPermaLink="true">https://blog.mayconjesus.dev/arrays-e-slices-em-golang</guid><category><![CDATA[golang]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[brazilliandevs]]></category><dc:creator><![CDATA[Maycon Jesus]]></dc:creator><pubDate>Sun, 02 Mar 2025 09:00:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1741197392368/ea370ffc-2245-4a43-b610-28423e8a16a9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-arrays-tamanho-fixo">Arrays (Tamanho Fixo)</h2>
<p>Em Go, arrays têm tamanho fixo, ou seja, o número de elementos não pode ser alterado depois que o array é criado.</p>
<h3 id="heading-exemplo-de-array-com-tamanho-fixo">Exemplo de Array com Tamanho Fixo:</h3>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> sites [<span class="hljs-number">4</span>]<span class="hljs-keyword">string</span>
</code></pre>
<ul>
<li><p>O array <code>sites</code> pode armazenar exatamente 4 elementos do tipo <code>string</code>.</p>
</li>
<li><p>O tamanho do array é uma parte de seu tipo, então arrays com diferentes tamanhos são considerados tipos diferentes.</p>
</li>
</ul>
<h2 id="heading-slices-tamanho-dinamico">Slices (Tamanho Dinâmico)</h2>
<p>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.</p>
<h3 id="heading-exemplo-de-slice-tamanho-dinamico">Exemplo de Slice (Tamanho Dinâmico):</h3>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> sites []<span class="hljs-keyword">string</span>
</code></pre>
<ul>
<li><p><code>sites</code> é um slice de <code>string</code>, sem um tamanho fixo, que pode ser redimensionado conforme necessário.</p>
</li>
<li><p>Diferente dos arrays, slices não são definidos com um número fixo entre os colchetes.</p>
</li>
</ul>
<h2 id="heading-inicializando-arrays-e-slices-com-itens">Inicializando Arrays e Slices com Itens</h2>
<h3 id="heading-inicializando-arrays-com-tamanho-fixo">Inicializando Arrays com Tamanho Fixo:</h3>
<p>Quando você inicializa um array com valores, o tamanho deve ser explicitamente definido.</p>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> strs = [<span class="hljs-number">2</span>]<span class="hljs-keyword">string</span>{<span class="hljs-string">"aaa"</span>, <span class="hljs-string">"bbb"</span>}
</code></pre>
<ul>
<li>Aqui, o array <code>strs</code> tem exatamente 2 elementos do tipo <code>string</code>.</li>
</ul>
<h3 id="heading-inicializando-slices-com-tamanho-dinamico">Inicializando Slices com Tamanho Dinâmico:</h3>
<p>Slices podem ser inicializados sem precisar especificar um tamanho fixo entre os colchetes.</p>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> strs = []<span class="hljs-keyword">string</span>{<span class="hljs-string">"aaa"</span>, <span class="hljs-string">"bbb"</span>}
</code></pre>
<ul>
<li>Neste caso, <code>strs</code> é um slice de <code>string</code> com dois elementos, mas o número de elementos pode crescer ou diminuir ao longo do tempo.</li>
</ul>
<h2 id="heading-metodos-importantes">Métodos Importantes</h2>
<h3 id="heading-1-append">1. <code>append()</code></h3>
<p>O método <code>append()</code> é usado para adicionar elementos a um slice. Se o slice atingir sua capacidade máxima, o <code>append()</code> automaticamente cria um novo slice com maior capacidade.</p>
<h4 id="heading-exemplo-de-uso-de-append">Exemplo de uso de <code>append</code>:</h4>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> strs = []<span class="hljs-keyword">string</span>{<span class="hljs-string">"aaa"</span>, <span class="hljs-string">"bbb"</span>}
strs = <span class="hljs-built_in">append</span>(strs, <span class="hljs-string">"ccc"</span>, <span class="hljs-string">"ddd"</span>)
fmt.Println(strs) <span class="hljs-comment">// Saída: [aaa bbb ccc ddd]</span>
</code></pre>
<ul>
<li><p>Aqui, dois novos elementos são adicionados ao slice <code>strs</code>. O slice cresce dinamicamente conforme necessário.</p>
</li>
<li><p>A função <code>append()</code> sempre retorna um novo slice, pois o slice original pode ter sua capacidade aumentada.</p>
</li>
</ul>
<h3 id="heading-2-len">2. <code>len()</code></h3>
<p>O método <code>len()</code> retorna o número de elementos no slice (ou array).</p>
<h4 id="heading-exemplo-de-uso-de-len">Exemplo de uso de <code>len</code>:</h4>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> strs = []<span class="hljs-keyword">string</span>{<span class="hljs-string">"aaa"</span>, <span class="hljs-string">"bbb"</span>, <span class="hljs-string">"ccc"</span>}
fmt.Println(<span class="hljs-built_in">len</span>(strs)) <span class="hljs-comment">// Saída: 3</span>
</code></pre>
<ul>
<li>O <code>len(strs)</code> retorna <code>3</code>, que é o número de elementos atualmente no slice <code>strs</code>.</li>
</ul>
<h3 id="heading-3-cap">3. <code>cap()</code></h3>
<p>O método <code>cap()</code> retorna a capacidade total do slice, ou seja, o número de elementos que ele pode armazenar antes de precisar ser realocado.</p>
<h4 id="heading-exemplo-de-uso-de-cap">Exemplo de uso de <code>cap</code>:</h4>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> strs = []<span class="hljs-keyword">string</span>{<span class="hljs-string">"aaa"</span>, <span class="hljs-string">"bbb"</span>}
fmt.Println(<span class="hljs-built_in">cap</span>(strs)) <span class="hljs-comment">// Saída: 2 (dependendo do tamanho inicial do slice)</span>
</code></pre>
<ul>
<li><p>A função <code>cap(strs)</code> retorna a capacidade do slice <code>strs</code>, que pode ser diferente do número de elementos (retornado por <code>len()</code>).</p>
</li>
<li><p>Em um slice, a capacidade pode ser maior que o número de elementos, permitindo que o slice cresça sem realocações imediatas.</p>
</li>
</ul>
<h2 id="heading-diferencas-principais">Diferenças Principais</h2>
<ul>
<li><p><strong>Arrays</strong>: Têm tamanho fixo e o tamanho é parte do tipo.</p>
</li>
<li><p><strong>Slices</strong>: 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 <code>append()</code>.</p>
</li>
</ul>
<h2 id="heading-resumo-de-funcoes">Resumo de Funções</h2>
<ul>
<li><p><code>append(slice, elements...)</code>: Adiciona elementos ao slice.</p>
</li>
<li><p><code>len(slice)</code>: Retorna o número de elementos no slice.</p>
</li>
<li><p><code>cap(slice)</code>: Retorna a capacidade do slice.</p>
</li>
</ul>
]]></content:encoded></item></channel></rss>