75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
|
/*
|
||
|
Slices: https://www.youtube.com/watch?v=CF9S4QZuV30&t=1139s#
|
||
|
Syntax: 0:3 - a slice capturing the first index up to then 3rd index
|
||
|
*/
|
||
|
|
||
|
package main
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
func main() {
|
||
|
/*
|
||
|
A slice is like an array but when you define them
|
||
|
you leave out the size
|
||
|
*/
|
||
|
|
||
|
//define an array without a static size of type 'int' and assign values
|
||
|
numSlice := []int{5, 4, 3, 2, 1}
|
||
|
|
||
|
/*
|
||
|
define a variable containing the pre-created array and
|
||
|
start at the 3rd index going through the 5th
|
||
|
(Indexes start at 0 here as well)
|
||
|
*/
|
||
|
numSlice2 := numSlice[3:5]
|
||
|
|
||
|
fmt.Println("numSlice2[0] =", numSlice2[0])
|
||
|
fmt.Println("numSlice2[1] =", numSlice2[1])
|
||
|
|
||
|
/*
|
||
|
If you do not supply the first number before the colon
|
||
|
the first number will default to index (0)
|
||
|
the result is everyting before index 2
|
||
|
*/
|
||
|
fmt.Println("numSlice[:2] =", numSlice[:2])
|
||
|
|
||
|
/*
|
||
|
The opposite is true if you do not supply the second number
|
||
|
the result is everything after index 2
|
||
|
*/
|
||
|
fmt.Println("numSlice[2:] =", numSlice[2:])
|
||
|
|
||
|
/*
|
||
|
To create a slice without set values, you need to use 'make'
|
||
|
If you want index 0 to start at index 5 and set a max
|
||
|
length of 10:
|
||
|
*/
|
||
|
|
||
|
numSlice3 := make([]int, 5, 10)
|
||
|
|
||
|
/*
|
||
|
numSlice3 at this point is empty since no values were assigned
|
||
|
but we can copy the values of numSlice with 'copy'
|
||
|
*/
|
||
|
copy(numSlice3, numSlice)
|
||
|
|
||
|
/*
|
||
|
Since numSlice3 begins at index 5, index 0 will output the
|
||
|
5th index of 'numSlice' which was copied into numSlice3
|
||
|
*/
|
||
|
fmt.Println("numSlice3[0] =", numSlice3[0])
|
||
|
fmt.Println("numSlice3[1] =", numSlice3[1])
|
||
|
|
||
|
/*
|
||
|
Since we gave numSlice3 a maximum of 10 possible indexes
|
||
|
we can append more values than the original 'numSlice' variable
|
||
|
which was only 5 indexes originally
|
||
|
*/
|
||
|
|
||
|
//append the values '0', and '-1' to the next available indexes ( 5 and 6)
|
||
|
numSlice3 = append(numSlice3, 0, -1)
|
||
|
|
||
|
fmt.Println("numSlice3[5] =", numSlice3[5])
|
||
|
fmt.Println("numSlice3[6] =", numSlice3[6])
|
||
|
}
|