diff --git a/README.md b/README.md index 7b82765..a8d1879 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1549 TILs and counting..._ +_1550 TILs and counting..._ --- @@ -406,6 +406,7 @@ _1549 TILs and counting..._ - [Build For A Specific OS And Architecture](go/build-for-a-specific-os-and-architecture.md) - [Check If Cobra Flag Was Set](go/check-if-cobra-flag-was-set.md) - [Combine Two Slices](go/combine-two-slices.md) +- [Create A Slice From An Array](go/create-a-slice-from-an-array.md) - [Detect If Stdin Comes From A Redirect](go/detect-if-stdin-comes-from-a-redirect.md) - [Deterministically Seed A Random Number Generator](go/deterministically-seed-a-random-number-generator.md) - [Do Something N Times](go/do-something-n-times.md) diff --git a/go/create-a-slice-from-an-array.md b/go/create-a-slice-from-an-array.md new file mode 100644 index 0000000..adab190 --- /dev/null +++ b/go/create-a-slice-from-an-array.md @@ -0,0 +1,44 @@ +# Create A Slice From An Array + +Slices in Go are a flexible abstraction over arrays. We can create a slice from +an array with the `[n:m]` _slicing_ syntax. We specify the left and right +(exclusive) bounds of the array that we want to create the slice relative to. + +We can exclude the lower bound which translates to the `0` index of the array. +We can exclude the left bound which translates to the end of the array. We can +even exclude both ends of the _slicing_ syntax which means creating a slice of +the entire array. + +Here is an example of each of those: + +```go +package main + +import "fmt" + +func main() { + arr := [...]string{ + "taco", + "burrito", + "torta", + "enchilada", + "quesadilla", + "pozole", + } + + firstTwo := arr[:2] + lastTwo := arr[len(arr)-2:] + all := arr[:] + + fmt.Println("First two:", firstTwo) + // First two: [taco burrito] + + fmt.Println("Last two:", lastTwo) + // Last two: [quesadilla pozole] + + fmt.Println("All:", all) + // All: [taco burrito torta enchilada quesadilla pozole +} +``` + +[source](https://go.dev/blog/slices-intro#slices)