PageSourceSearch

https://abdulghofurme.github.io/_astro/golang-bag-7-pengenalan-slice.cdac7e5b.js

js abdulghofurme.github.io collected 2026-10-03 08:33:51 UTC 14,371 bytes, 213 lines download raw bytes

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.