1import{c as t,s as r,r as p,m as o}from"./_astro_assets.472ae6a9.js";import{u as d}from"./hoisted.69806e86.js";import"./astro-assets-services.68131ab1.js";const c=async function(){return{}};async function F(s){return c().then(a=>s.replaceAll(/__ASTRO_IMAGE_="([^"]+)"/gm,(i,n)=>r({src:a[n].src,...a[n].attributes})))}const l=await F(`<h2 id="slice">Slice</h2> 2<p><em>Slice</em> adalah <em>reference</em> elemen array. Pada dasarnya <em>slice</em> hampir sama persis dengan array, hanya saja saat kita merubah datanya, maka data data lain dengan <em>reference</em> yang sama pun akan berubah.</p> 3<p>Apaan sih???</p> 4<p>Okay. Kita bahas <em>reference</em> terlebih dahulu.</p> 5<p><em>Reference</em> merupakan data yang memiliki alamat memori yang sama.</p> 6<p><em>Analogi</em>-nya, kita punya ember isi air, lalu kita ingin mengambil air itu ke ember yang lain, 7alih-alih memindah/meng-<em>copy</em> ke ember lain, kita ambil ember baru, kita sambungkan ember A dan B dengan selang di bawahnya. <em>Nyambung</em> dong, nah saat kita memberi pewarna pada air di ember B, maka air di ember A pun ikut berubah. 8<em>Reference</em> / alamat memory yang sama. 9Bedanya di reference airnya tidak dibagi ya, tetep sama. 10Masih susah dimengerti? yah, ngga ketemu <em>analogi</em> yang lebih sederhana nih.</p> 11<p><strong>Nah</strong>, <strong>Slice</strong> merupakan kumpulan/baris ember seperti itu, kalau satu diubah, data dengan alamat memori yang sama pun akan berubah</p> 12<p>Tambah pusing? Okay Contoh</p> 13<pre is:raw="" class="astro-code dracula" style="background-color: #282A36; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;" tabindex="0"><code><span class="line"><span style="color: #FF79C6">var</span><span style="color: #F8F8F2"> kelas1 </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> []</span><span style="color: #8BE9FD; font-style: italic">string</span><span style="color: #F8F8F2">{</span></span> 14<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Andi</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 15<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Fatah</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 16<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Budi</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 17<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Agung</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 18<span class="line"><span style="color: #F8F8F2">}</span></span> 19<span class="line"></span> 20<span class="line"><span style="color: #FF79C6">var</span><span style="color: #F8F8F2"> naikKelas2 </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> kelas1[</span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">3</span><span style="color: #F8F8F2">]</span></span> 21<span class="line"></span> 22<span class="line"><span style="color: #F8F8F2">fmt.</span><span style="color: #8BE9FD">Println</span><span style="color: #F8F8F2">(kelas1, naikKelas2)</span></span> 23<span class="line"><span style="color: #6272A4">// [Andi Fatah Budi Agung] [Andi Fatah Budi]</span></span> 24<span class="line"></span> 25<span class="line"><span style="color: #F8F8F2">naikKelas2[</span><span style="color: #BD93F9">1</span><span style="color: #F8F8F2">] </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Lucinta</span><span style="color: #E9F284">"</span></span> 26<span class="line"></span> 27<span class="line"><span style="color: #F8F8F2">fmt.</span><span style="color: #8BE9FD">Println</span><span style="color: #F8F8F2">(kelas1, naikKelas2)</span></span> 28<span class="line"><span style="color: #6272A4">// [Andi Lucinta Budi Agung] [Andi Lucinta Budi]</span></span></code></pre> 29<p><em>Analogi</em> kode di atas.</p> 30<p>sebuah kelas berisi 4 siswa, namanya di atas lah ya</p> 31<p>saat naik kelas 2, kita buat kelas lagi hanya saja si absen terakhir ngga naik.</p> 32<p>nah saat di kelas 2 ini, si <code>Fatah</code> berubah namanya jadi <code>Lucinta</code></p> 33<p>apa yang terjadi, seperti halnya sulap, saat kita periksa data kelas 1 dan 2 di ruang guru, nama fatah tidak hanya berubah di kelas 2, tapi datanya di kelas 1 pun berubah nama.
33</p> 34<p>Sekarang detail kode.</p> 35<p><em>Deklarasi</em> dan <em>inisialisasi</em> sama dengan <em>array</em>. hanya saja, pada slice kita tidak perlu menulis alokasi-nya, cukup <code>[]</code>, dan tidak perlu <code>...</code></p> 36<p><code>var naikKelas2 = kelas1[0:3]</code></p> 37<p>Ini saat kita membuat slice baru dengan meng-<em>copy</em> / me-<em>reference</em> / dari alamat memori array/slice tertentu, dalam kasus di atas, dari <code>kelas1</code>.</p> 38<p>Kalau <em>1 index</em> / <code>data[0]</code> merupakan pengaksesan data. 39maka dengan <em>2 index</em> / <code>data[startIndex:afterIndex]</code> kita meng-<em>copy</em> data dari <code>startIndex</code> sampai data sebelum <code>afterIndex</code></p> 40<p>dalam kasus <code>kelas1[0:3]</code> dari index <code>0</code> sampai index <code>2</code> (sebelum 3).</p> 41<p>BTW, perlu diingat kita bisa bisa membuat slice dari slice yang ada / dari array yang ada.</p> 42<pre is:raw="" class="astro-code dracula" style="background-color: #282A36; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;" tabindex="0"><code><span class="line"><span style="color: #FF79C6">var</span><span style="color: #F8F8F2"> siswi </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> [</span><span style="color: #FF79C6">...</span><span style="color: #F8F8F2">]</span><span style="color: #8BE9FD; font-style: italic">string</span><span style="color: #F8F8F2">{</span></span> 43<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Amel</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 44<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Rizki</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 45<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Nada</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 46<span class="line"><span style="color: #F8F8F2">}</span></span> 47<span class="line"></span> 48<span class="line"><span style="color: #FF79C6">var</span><span style="color: #F8F8F2"> siswiLolos </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> siswi[</span><span style="color: #BD93F9">1</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">3</span><span style="color: #F8F8F2">]</span></span> 49<span class="line"></span> 50<span class="line"><span style="color: #F8F8F2">fmt.</span><span style="color: #8BE9FD">Println</span><span style="color: #F8F8F2">(siswi, siswiLolos)</span></span> 51<span class="line"><span style="color: #6272A4">// [Amel Rizki Nada] [Rizki Nada]</span></span></code></pre> 52<p>Pada contoh di atas kita membuat slice dari array,</p> 53<p>Dan kita membuat array dari index 1 sampai index 2.</p> 54<p>OK, sekarang beberapa contoh / aturan dalam <em>2 index</em></p> 55<pre is:raw="" class="astro-code dracula" style="background-color: #282A36; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;" tabindex="0"><code><span class="line"><span style="color: #FF79C6">var</span><span style="color: #F8F8F2"> siswa </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> []</span><span style="color: #8BE9FD; font-style: italic">string</span><span style="color: #F8F8F2">{</span></span> 56<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Andi</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 57<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Fatah</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 58<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Budi</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 59<span class="line"><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Agung</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span> 60<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre> 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106<table><thead><tr><th>
106kode</th><th>detail</th><th>output</th></tr></thead><tbody><tr><td>siswa[0:3]</td><td>item dari index 0, sampai 2</td><td>[âAndiâ, âFatahâ, âBudiâ]</td></tr><tr><td>siswa[0:0]</td><td>kosong, tidak ada item sebelum index 0</td><td>[]</td></tr><tr><td>siswa[4:4]</td><td>kosong, tidak ada item dengan index 4</td><td>[]</td></tr><tr><td>siswa[2:0]</td><td>error, harusnya afterIndex >= startIndex</td><td>[]</td></tr><tr><td>siswa[:]</td><td>semuanya</td><td>[âAndiâ, âFatahâ, âBudiâ, âAgungâ]</td></tr><tr><td>siswa[3:]</td><td>dari index 3 sampai selesai</td><td>[âBudiâ, âAgungâ]</td></tr><tr><td>siswa[:2]</td><td>semua sebelum index 2</td><td>[âAndiâ, âFatahâ]</td></tr></tbody></table> 107<p>Demikian artikel kali ini, 108Terima kasih.</p>`),m={title:"Golang bagian-7 Pengenalan Slice",description:"Golang slice - mengenal slice dan kegunaannya pada bahasa go",tags:["golang","belajarapa"],publishDate:"06 Jun 2020",minutesRead:"3 min read"},y="/home/runner/work/abdulghofurme.github.io/abdulghofurme.github.io/src/content/post/golang-bag-7-pengenalan-slice.md",u=void 0;function h(){return` 109## Slice 110 111_Slice_ adalah _reference_ elemen array. Pada dasarnya _slice_ hampir sama persis dengan array, hanya saja saat kita merubah datanya, maka data data lain dengan _reference_ yang sama pun akan berubah. 112 113Apaan sih??? 114 115Okay. Kita bahas _reference_ terlebih dahulu. 116 117_Reference_ merupakan data yang memiliki alamat memori yang sama. 118 119_Analogi_-nya, kita punya ember isi air, lalu kita ingin mengambil air itu ke ember yang lain, 120alih-alih memindah/meng-_copy_ ke ember lain, kita ambil ember baru, kita sambungkan ember A dan B dengan selang di bawahnya. _Nyambung_ dong, nah saat kita memberi pewarna pada air di ember B, maka air di ember A pun ikut berubah. 121_Reference_ / alamat memory yang sama. 122Bedanya di reference airnya tidak dibagi ya, tetep sama. 123Masih susah dimengerti? yah, ngga ketemu _analogi_ yang lebih sederhana nih. 124 125**Nah**, **Slice** merupakan kumpulan/baris ember seperti itu, kalau satu diubah, data dengan alamat memori yang sama pun akan berubah 126 127Tambah pusing? Okay Contoh 128 129\`\`\`go 130var kelas1 = []string{ 131 "Andi", 132 "Fatah", 133 "Budi", 134 "Agung", 135} 136 137var naikKelas2 = kelas1[0:3] 138 139fmt.Println(kelas1, naikKelas2) 140// [Andi Fatah Budi Agung] [Andi Fatah Budi] 141 142naikKelas2[1] = "Lucinta" 143 144fmt.Println(kelas1, naikKelas2) 145// [Andi Lucinta Budi Agung] [Andi Lucinta Budi] 146\`\`\` 147 148_Analogi_ kode di atas. 149 150sebuah kelas berisi 4 siswa, namanya di atas lah ya 151 152saat naik kelas 2, kita buat kelas lagi hanya saja si absen terakhir ngga naik. 153 154nah saat di kelas 2 ini, si \`Fatah\` berubah namanya jadi \`Lucinta\` 155 156apa yang terjadi, seperti halnya sulap, saat kita periksa data kelas 1 dan 2 di ruang guru, nama fatah tidak hanya berubah di kelas 2, tapi datanya di kelas 1 pun berubah nama. 157 158Sekarang detail kode. 159 160_Deklarasi_ dan _inisialisasi_ sama dengan _array_. hanya saja, pada slice kita tidak perlu menulis alokasi-nya, cukup \`[]\`, dan tidak perlu \`...\` 161 162\`var naikKelas2 = kelas1[0:3]\` 163 164Ini saat kita membuat slice baru dengan meng-_copy_ / me-_reference_ / dari alamat memori array/slice tertentu, dalam kasus di atas, dari \`kelas1\`. 165 166Kalau _1 index_ / \`data[0]\` merupakan pengaksesan data. 167maka dengan _2 index_ / \`data[startIndex:afterIndex]\` kita meng-_copy_ data dari \`startIndex\` sampai data sebelum \`afterIndex\` 168 169dalam kasus \`kelas1[0:3]\` dari index \`0\` sampai index \`2\` (sebelum 3). 170 171BTW, perlu diingat kita bisa bisa membuat slice dari slice yang ada / dari array yang ada. 172 173\`\`\`go 174var siswi = [...]string{ 175 "Amel", 176 "Rizki", 177 "Nada", 178} 179 180var siswiLolos = siswi[1:3] 181 182fmt.Println(siswi, siswiLolos) 183// [Amel Rizki Nada] [Rizki Nada] 184\`\`\` 185 186Pada contoh di atas kita membuat slice dari array, 187 188Dan kita membuat array dari index 1 sampai index 2. 189 190OK, sekarang beberapa contoh / aturan dalam _2 index_ 191 192\`\`\`go 193var siswa = []string{ 194 "Andi", 195 "Fatah", 196 "Budi", 197 "Agung", 198} 199\`\`\` 200 201| kode | detail | output | 202| ---------- | ---------------------------------------- | ---------------------------------- | 203| siswa[0:3] | item dari index 0, sampai 2 | ["Andi", "Fatah", "Budi"] | 204| siswa[0:0] | kosong, tidak ada item sebelum index 0 | [] | 205| siswa[4:4] | kosong, tidak ada item dengan index 4 | [] | 206| siswa[2:0] | error, harusnya afterIndex >= startIndex | [] | 207| siswa[:] | semuanya | ["Andi", "Fatah", "Budi", "Agung"] | 208| siswa[3:] | dari index 3 sampai selesai | ["Budi", "Agung"] | 209| siswa[:2] | semua sebelum index 2 | ["Andi", "Fatah"] | 210 211Demikian artikel kali ini, 212Terima kasih. 213`}function A(){return l}function w(){return[{depth:2,slug:"slice",text:"Slice"}]}const f=t((s,a,i)=>{const{layout:n,...e}=m;return e.file=y,e.url=u,p`${o()}${d(l)}`});export{f as Content,A as compiledContent,f as default,y as file,m as frontmatter,w as getHeadings,h as rawContent,u as url};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.