2019-01-29 19:43:12 +03:00
# Slice Exercises
## Exercises Level I - Basics — Warm-Up
2019-03-05 23:32:32 +03:00
Let's reinforce your basic knowledge of slices.
2019-01-29 19:56:18 +03:00
2019-01-29 19:43:12 +03:00
1. ** [Declare nil slices ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/01-declare-nil )**
2. ** [Assign empty slices ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/02-empty )**
3. ** [Assign slice literals ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/03-slice-literal )**
4. ** [Declare the arrays as slices ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/04-declare-arrays-as-slices )**
5. ** [Fix the Problems ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/05-fix-the-problems )**
6. ** [Compare the slices ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/06-compare-the-slices )**
---
## Exercises Level II - Appending
2019-03-05 23:32:32 +03:00
Discover the power of the append function.
2019-01-29 19:43:12 +03:00
1. ** [Append #1 — Append and compare byte slices ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/07-append )**
2. ** [Append #2 — Append to a nil slice ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/08-append-2 )**
2019-01-30 16:47:30 +03:00
3. ** [Append #3 — Fix the problems ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/09-append-3-fix )**
4. ** [Append and Sort Numbers ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/10-append-sort-nums )**
5. ** [Housing Prices ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/11-housing-prices )**
6. ** [Housing Prices and Averages ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/12-housing-prices-averages )**
---
## Exercises Level III - Slicing
2019-03-05 23:32:32 +03:00
Discover the power of slicing.
2019-01-30 16:47:30 +03:00
1. ** [Slice the numbers ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/13-slicing-basics )**
2. ** [Slicing by arguments ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/14-slicing-by-args )**
2019-02-08 13:10:55 +03:00
3. ** [Slicing the Housing Prices ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/15-slicing-housing-prices )**
---
## Exercises Level IV - Internals
2019-03-05 23:32:32 +03:00
Peek into the internals of the slices and gain more insight. This is necessary for complete command of the slices.
2019-02-08 13:10:55 +03:00
1. ** [Fix the backing array problems ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/16-internals-backing-array-fix )**
2. ** [Sort the backing array ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/17-internals-backing-array-sort )**
3. ** [Observe the memory allocations ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/18-internals-slice-header )**
2019-03-04 20:30:18 +03:00
4. ** [Observe the length and capacity ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/19-observe-len-cap )**
5. ** [Observe the capacity growth ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/20-observe-the-cap-growth )**
2019-03-05 23:32:32 +03:00
6. ** [Correct the lyric ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/21-correct-the-lyric )**
---
## Exercises Level V - Advanced Operations
Commonly used and more advanced operations are available to slices. Now, it's time to test yourself and fix some common problems.
2019-03-06 01:26:13 +03:00
★ WARNING ★
Please update your local copy of the prettyslice package for some examples to work. [Please find the intructions how to do so here ](../README.md ).
2019-03-05 23:32:32 +03:00
1. ** [Practice Advanced Slice Operations ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/22-adv-ops-practice )**
Let's warm you up for the advanced slice operations, and reinforce your neurons.
2. ** [Limit the backing array sharing ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/23-limit-the-backing-array-sharing )**
2019-08-18 15:32:48 +03:00
Your package needs to control the slices that it shares with the outside world.
2019-03-05 23:32:32 +03:00
2019-03-05 23:49:54 +03:00
3. ** [Fix the Memory Leak ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/24-fix-the-memory-leak )**
2019-03-05 23:32:32 +03:00
2019-08-18 15:32:48 +03:00
A slice retrieved from a package causes a memory leak in your program. You need to fix it.
2019-03-05 23:32:32 +03:00
2019-08-18 14:03:08 +03:00
4. ** [Add a newline after each sentence ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/25-add-lines )**
2019-03-05 23:32:32 +03:00
Use the power of the `copy()` function and add newlines into a new buffer from a string slice. This exercise is more tricky than you might think.
5. ** [Print Daily Requests ](https://github.com/inancgumus/learngo/tree/master/16-slices/exercises/26-print-daily-requests )**
2019-08-18 15:32:48 +03:00
Group the web request logs into a multi-dimensional slice. Allocate a slice with the exact size needed by doing some wizardary calculations. And lastly, pretty print the result.