This document provides an overview of Go programming concepts including slices, maps, structs, make, and new. It includes links to interactive code examples demonstrating how to use slices to store and access elements, maps to associate keys with values, and structs to group related data. The key differences between make and new are explained, where make is used to initialize slices, maps, and channels, and new returns a pointer to a newly allocated zero value.
7. ● making a Slice
https://play.golang.org/p/ZZVKKlFpSpC
0 Kannada - Shubhodava
1 Konkani - Dev Tuka Boro Dis Divum
2 Korean - Annyunghaseyo
3 Latvian - Labrit
4 Lithuanian – Labas Rytas
5 Macedonian - Dobro utro
6 Malayalam – Namaskaram
7 Maltese – L-Ghodwa t-Tajba
8 Mandarin – Nin hao
9 Marathi - Suprabhat
Kannada - Shubhodava
Konkani - Dev Tuka Boro Dis Divum
Korean - Annyunghaseyo
Latvian – Labrit
Lithuanian – Labas Rytas
Macedonian - Dobro utro
Malayalam – Namaskaram
Maltese – L-Ghodwa t-Tajba
Mandarin – Nin hao
Marathi - Suprabhat
8. ● Slicing a Slices
https://play.golang.org/p/IKvj069CHzv
9. ● making a slice
https://play.golang.org/p/r21LWwwQ9y-
If we think that our slice might grow, we can set a capacity larger than
length. This gives our slice room to grow without golang having to create
a new underlying array every time our slice grows. When the slice
exceeds capacity, then a new underlying array will be created. These arrays
double in size each time they’re created (2, 4, 8, 16) up to a certain point,
and then they scale in some smaller proportion.
10. ● appending to slice
https://play.golang.org/p/dSDiSBTiJC7
11. ● appending beyond capacity to a slice
https://play.golang.org/p/jJdMcszsJRM
If we think that our slice might grow, we can set a capacity larger than
length. This gives our slice room to grow without golang having to
create a new underlying array every time our slice grows. When the
slice exceeds capacity, then a new underlying array will be created.
These arrays typically double in size each time they’re created (2, 4, 8,
16).
12. ● appending slice to a slice
notice the syntax
args...
https://play.golang.org/p/6OIh7zeM5Nj
13. ● delete from Slice
https://play.golang.org/p/Z7H6GdPgDMy
14. ● exercise
● write a program that creates a slice of ints
using shorthand notation then prints the slice
● write a program that creates a slice of strings
using shorthand notation then prints the slice
● create a slice of ints using make;set the length
to 5 and capacity to 10
● append a slice to a slice
● delete an element from a slice.
16. ● map
● basic info
○ key:value
○ maps keys to values
○ called “dictionaries” in some languages
○ built into the language (not an additional library
you must import) so they’re first-class citizens
● Map Keys
○ need to be unique
○ the type used for a key needs to have the
equality operator defined for it
■ the type must allow equals comparisons
■ can’t use these types
● slice
● map
● Maps are Reference Types
○ they behave like pointers
○ when you pass a map variable to a function
■ any changes to that mapped variable
in the function
■ change that original mapped variable
outside the function
● Maps are Not Thread Safe
○ best to avoid using maps concurrently
17. ● Shorthand for Creating Map
https://play.golang.org/p/ptO8KjvdKNt
18. ● adding an entry to a map
https://play.golang.org/p/Tia8HLGK3mD https://play.golang.org/p/0dZnCo440k7
19. ● updating /delete an entry
https://play.golang.org/p/LbZJt2y8UFn https://play.golang.org/p/MAXxKaxgfnw
23. ● make a map
https://play.golang.org/p/fTAwe3wEWoL
24. ● exercise
create a program that:
● creates a map using shorthand notation
● adds an entry to the map
● changes an entry in the map
● deletes an entry in the map
● prints all of the entries in the map using range
● prints the len of the map
● uses the comma ok idiom
25. ● make vs new
● make
○ slices, maps, channels
○ allocates memory
○ initializes
■ puts 0 or empty string into values
● new
○ returns a pointer
■ newly allocated
■ zeroed value
● “returns a pointer to a
newly allocated zeroed
value of type T”
https://play.golang.org/p/ij1aXv6J7HE
26. ● new
○ returns a pointer
■ newly allocated
■ zeroed value
● “returns a pointer to a newly allocated
zeroed value of type T”
make vs new
● make
○ slices, maps, channels
○ allocates memory
○ initializes
■ puts 0 or empty string into values
https://play.golang.org/p/rKcc3Lv8bOY
27. ● zero value
false for booleans, 0 for integers, 0.0 for floats, "" for strings
nil for pointers, functions, interfaces, slices, channels, and maps
28. ● make vs new
● new
○ returns a pointer
■ newly allocated
■ zeroed value
● “returns a pointer to a newly
allocated zeroed value of type T”
● make
○ slices, maps, channels
○ allocates memory
○ initializes
■ puts 0 or empty string into values
https://play.golang.org/p/hYm8y3AiQDV
29. ● make vs new
● make
○ slices, maps, channels
○ allocates memory
○ initializes
■ puts 0 or empty string into values
● new
○ returns a pointer
■ newly allocated
■ zeroed value
● “returns a pointer to a newly
allocated zeroed value of type T”
https://play.golang.org/p/zXpIGWTFP5A
30. ● make vs new
● make
○ slices, maps, channels
○ allocates memory
○ initializes
■ puts 0 or empty string into values
https://play.golang.org/p/r77ksucKjSi
● new
○ returns a pointer
■ newly allocated
■ zeroed value
● “returns a pointer to a newly
allocated zeroed value of type T”
31. ● make
○ slices, maps, channels
○ allocates memory
● initializes
■ puts 0 or empty string into values
● make vs new
https://play.golang.org/p/lhOc5lXQizU
32. ● make vs new
● make
○ slices, maps, channels
○ allocates memory
● initializes
■ puts 0 or empty string into values
https://play.golang.org/p/RRyqZc8q0oI
33. ● make vs new
● make
○ slices, maps, channels
○ allocates memory
● initializes
■ puts 0 or empty string into values
https://play.golang.org/p/Z64HscwjFc_L
34. ● make vs new
● make
○ slices, maps, channels
○ allocates memory
● initializes
■ puts 0 or empty string into values
https://play.golang.org/p/qI1mMyumewG
37. ● exercise
create a program that:
● declares a variable of type int using new
○ (note: this is not idiomatic go code to create an int this way)
● print out the memory address of the variable
● print out the value of the variable
● true or false:
○ new returned a pointer
create a program that:
● declares a variable of type string using new
○ (note: this is not idiomatic go code to create an string this way)
● print out the memory address of the variable
● print out the value of the variable
● true or false:
○ new returned a pointer
38. ● exercise
create a program that:
● declares a variable of type bool using new
○ (note: this is not idiomatic go code to create an bool this way)
● print out the memory address of the variable
● print out the value of the variable
● true or false:
○ new returned a pointer
39. ● exercise
create a program that:
● declares a variable of type[]int using make
● print out the value of the variable
● true or false:
○ make returned a pointer
create a program that:
● declares a variable of type map[int]string using make
● print out the value of the variable
● true or false:
○ make returned a pointer
40. ● What are the zeroed values for int, string,
bool?
● What are the zeroed values for slice and map
● Explain the difference between make and
new
41. ● struct – grouped fields
create a struct
and initialize it
https://play.golang.org/p/UJ1xEwy4VOP
50. question
Can we use make with a struct?
no
make is for slices, maps, and channels
● make
○ slices, maps, channels
○ allocates memory
● initializes
■ puts 0 or empty string into values
54. ● exercise
create a program that:
● defines a struct type to hold customer info
● initialize two variables using that struct type
● uses dot-notation to print a field from each of
the variables
● changes the value of one of the fields
● prints the changed field
● Can you use new to create a variable of a
struct type?