Skip to content

Commit 7e30b32

Browse files
author
Rajeev Kumar Singh
committed
Golang Slices and Maps
1 parent 103ce44 commit 7e30b32

26 files changed

+418
-1
lines changed

Readme.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@
1010

1111
5. [Golang Control Flow Statements: If, Switch and For](https://www.callicoder.com/golang-control-flow/)
1212

13-
6. [Working with Arrays in Golang](https://www.callicoder.com/golang-arrays/)
13+
6. [Working with Arrays in Golang](https://www.callicoder.com/golang-arrays/)
14+
15+
7. [Introduction to Slices in Golang](https://www.callicoder.com/golang-slices/)
16+
17+
8. [Golang Maps by Example](https://www.callicoder.com/golang-maps/)

tutorial7-slices/slice_append.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var slice1 = []string{"C", "C++", "Java"}
7+
var slice2 = append(slice1, "Python", "Ruby", "Go")
8+
9+
fmt.Printf("slice1 = %v, len = %d, cap = %d\n", slice1, len(slice1), cap(slice1))
10+
fmt.Printf("slice2 = %v, len = %d, cap = %d\n", slice2, len(slice2), cap(slice2))
11+
12+
slice1[0] = "C#"
13+
fmt.Println("\nslice1 = ", slice1)
14+
fmt.Println("slice2 = ", slice2)
15+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var slice1 = make([]string, 3, 10)
7+
copy(slice1, []string{"C", "C++", "Java"})
8+
9+
var slice2 = append(slice1, "Python", "Ruby", "Go")
10+
11+
fmt.Printf("slice1 = %v, len = %d, cap = %d\n", slice1, len(slice1), cap(slice1))
12+
fmt.Printf("slice2 = %v, len = %d, cap = %d\n", slice2, len(slice2), cap(slice2))
13+
14+
slice1[0] = "C#"
15+
fmt.Println("\nslice1 = ", slice1)
16+
fmt.Println("slice2 = ", slice2)
17+
}

tutorial7-slices/slice_append_nil.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var s []string
7+
8+
// Appending to a nil slice
9+
s = append(s, "Cat", "Dog", "Lion", "Tiger")
10+
11+
fmt.Printf("s = %v, len = %d, cap = %d\n", s, len(s), cap(s))
12+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var slice1 = []string{"Jack", "John", "Peter"}
7+
var slice2 = []string{"Bill", "Mark", "Steve"}
8+
9+
var slice3 = append(slice1, slice2...)
10+
11+
fmt.Println("slice1 = ", slice1)
12+
fmt.Println("slice2 = ", slice2)
13+
fmt.Println("After appending slice1 & slice2 = ", slice3)
14+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var s = []int{10, 20, 30, 40, 50, 60, 70, 80, 90, 100}
7+
fmt.Println("Original Slice")
8+
fmt.Printf("s = %v, len = %d, cap = %d\n", s, len(s), cap(s))
9+
10+
s = s[1:5]
11+
fmt.Println("\nAfter slicing from index 1 to 5")
12+
fmt.Printf("s = %v, len = %d, cap = %d\n", s, len(s), cap(s))
13+
14+
s = s[:8]
15+
fmt.Println("\nAfter extending the length")
16+
fmt.Printf("s = %v, len = %d, cap = %d\n", s, len(s), cap(s))
17+
18+
s = s[2:]
19+
fmt.Println("\nAfter dropping the first two elements")
20+
fmt.Printf("s = %v, len = %d, cap = %d\n", s, len(s), cap(s))
21+
}

tutorial7-slices/slice_copy.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var src = []string{"Sublime", "VSCode", "IntelliJ", "Eclipse"}
7+
var dest = make([]string, 2)
8+
9+
var numElementsCopied = copy(dest, src)
10+
11+
fmt.Println("src = ", src)
12+
fmt.Println("dest = ", dest)
13+
fmt.Println("Number of elements copied from src to dest = ", numElementsCopied)
14+
}

tutorial7-slices/slice_defaults.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var a = [5]string{"C", "C++", "Java", "Python", "Go"}
7+
8+
var slice1 = a[1:4]
9+
var slice2 = a[:3]
10+
var slice3 = a[2:]
11+
var slice4 = a[:]
12+
13+
fmt.Println("Array a = ", a)
14+
fmt.Println("slice1 = ", slice1)
15+
fmt.Println("slice2 = ", slice2)
16+
fmt.Println("slice3 = ", slice3)
17+
fmt.Println("slice4 = ", slice4)
18+
}

tutorial7-slices/slice_from_array.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var a = [5]string{"Alpha", "Beta", "Gamma", "Delta", "Epsilon"}
7+
8+
// Creating a slice from the array
9+
var s []string = a[1:4]
10+
11+
fmt.Println("Array a = ", a)
12+
fmt.Println("Slice s = ", s)
13+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func main() {
6+
var a = [6]int{10, 20, 30, 40, 50, 60}
7+
var s = a[1:4]
8+
9+
fmt.Printf("s = %v, len = %d, cap = %d\n", s, len(s), cap(s))
10+
}

0 commit comments

Comments
 (0)