[ā§Ģ.ā§§] new(), make() āĻĻāĻŋā§ā§ āĻŽā§āĻŽāĻ°āĻŋ āĻ ā§āĻ¯āĻžāĻ˛ā§āĻā§āĻļāĻ¨ : (Memory allocation using new() & make())
[ā§Ģ.ā§§.ā§§] new()
āĻāĻāĻāĻž āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻŋ, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻāĻāĻž āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ āĻāĻ° āĻļā§āĻ§ā§ āĻŽāĻžāĻ¤ā§āĻ° āĻĄāĻžāĻāĻž āĻāĻžāĻāĻĒ āĻāĻŦāĻ āĻ¸āĻžāĻāĻ āĻāĻžāĻ¨āĻŋ; āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻžāĻ° āĻā§āĻ¯āĻžāĻ˛ā§ āĻāĻŋ āĻšāĻŦā§ āĻ¤āĻž āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°āĻāĻŋ āĻ¨āĻž (āĻļā§āĻ°ā§āĻ¤ā§ āĻ¸āĻŦāĻžāĻ nil/zero āĻĨāĻžāĻāĻŦā§), āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻ¤ā§ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨ āĻāĻ°ā§ āĻ¨āĻŋāĻŦā§āĨ¤ āĻāĻ°āĻāĻŽ āĻā§āĻāĻ¸ā§ āĻāĻŽāĻ°āĻž new() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
new() āĻšāĻ˛ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻ-āĻāĻ¨ āĻĢāĻžāĻāĻļāĻ¨, āĻ¯ā§āĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ¯ā§ āĻā§āĻ¨ā§ āĻĄāĻžāĻāĻž āĻāĻžāĻāĻĒ āĻāĻ° āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻž zero / nil āĻā§āĻ¯āĻžāĻ˛ā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻ˛ā§āĻā§āĻ¯āĻžāĻā§āĻĄ āĻŽā§āĻŽāĻ°āĻŋ āĻĒāĻžāĻŦā§ āĨ¤ āĻāĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸
func new(Type) *Type
āĻāĻ āĻŽā§āĻŽāĻ°āĻŋ āĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ dereferencing ( āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ āĻāĻ° āĻāĻā§ * āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°) āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¨āĻŋāĻā§āĻ° āĻā§āĻĄāĻāĻŋ āĻā§ā§āĻžāĻ˛ āĻāĻ°āĻŋ –
p := new(int) // allocate memory for an int using new() function
// Before assigning any value
fmt.Println("Value of p:", *p)
fmt.Println("Memory address of p:", p)
*p = 10 // assign a value to the variable pointed by the pointer
// after assigning value
fmt.Println("Value of p:", *p)
fmt.Println("Memory address of p:", p)
āĻā§āĻĄā§āĻ° āĻāĻāĻāĻĒā§āĻ –
Value of p: 0
Memory address of p: 0xc0000140f8
Value of p: 10
Memory address of p: 0xc0000140f8
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻĄāĻžāĻāĻž āĻāĻžāĻāĻĒ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤āĻžāĻŽ āĻāĻŦāĻ āĻ¤āĻžāĻšāĻ˛ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻāĻ° āĻ¸āĻžāĻāĻÂ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻāĻžāĻ¨āĻž āĻĨāĻžāĻāĻž āĻ˛āĻžāĻāĻŦā§āĨ¤ āĻ¨āĻŋāĻā§āĻ° āĻā§āĻĄ āĻāĻž āĻā§ā§āĻžāĻ˛ āĻāĻ°āĻŋ –
āĻāĻ° āĻāĻāĻāĻĒā§āĻ –Â
newArray := new([5]int)
fmt.Println("length: ", len(newArray), " capacity: ", cap(newArray))
newArray[0] = 10 //assigning a value to the first element
newArray[4] = 20 //assigning a value to the last element
fmt.Println("newArray: ", newArray)
length: 5 capacity: 5
newArray: &[10 0 0 0 20]
āĻā§ā§āĻžāĻ˛ āĻāĻ°āĻŋ, āĻ ā§āĻ¯āĻžāĻ°ā§ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻžāĻāĻ āĻāĻ°āĻž newArray āĻāĻ° āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° derefernce āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻā§āĻā§ āĻ¨āĻž (āĻāĻžāĻ°āĻŖ āĻāĻŋ?)Â
ā§§āĻŽ āĻāĻŦāĻ āĻļā§āĻˇ āĻāĻ¨āĻĄā§āĻā§āĻ¸ā§ āĻā§āĻ¯āĻžāĻ˛ā§ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨ āĻāĻ°ā§ āĻĻā§ā§āĻž āĻšā§ā§āĻā§, āĻŦāĻžāĻāĻŋ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻā§āĻ˛ā§ 0 āĻ āĻ°ā§ā§ āĻāĻŋā§ā§āĻā§āĨ¤Â
āĻĄāĻžāĻāĻž āĻāĻžāĻāĻĒ āĻšāĻŋāĻ¸ā§āĻŦā§ Struct āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ˛ā§ Struct āĻāĻ° āĻ¸āĻžāĻāĻ āĻ āĻāĻā§ āĻĨā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ āĻĻā§ā§āĻž āĻ˛āĻžāĻāĻŦā§ –Â
type Vertex struct {
X int
Y int
}
newStruct := new([5]Vertex)
fmt.Println("length: ", len(newStruct), " capacity: ", cap(newStruct))
// accessing the 1st element
newStruct[0].X = 1
newStruct[0].Y = 10
// accessing the last element
newStruct[4].X = 5
newStruct[4].Y = 10
fmt.Println("newStruct: ", newStruct)
āĻāĻ° āĻāĻāĻāĻĒā§āĻ –Â
length: 5 capacity: 5
newStruct: &[{1 10} {0 0} {0 0} {0 0} {5 10}]
āĻāĻāĻžāĻ¨ā§ Struct āĻāĻ° āĻ ā§āĻ¯āĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšā§ā§āĻā§āĨ¤ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻāĻ°ā§ āĻļā§āĻ§ā§ Struct āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžā§ –
newStruct := new(Vertex)
// accessing the element
newStruct.X = 1
newStruct.Y = 10
fmt.Println("newStruct: ", newStruct) // output: &{1 10}
[ā§Ģ.ā§§.ā§¨] make()
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻ°ā§āĻāĻāĻž āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻŋāĻÂ
- āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻ˛āĻžāĻāĻ¸ / map / āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻ¨āĻŋā§ā§ āĻāĻžāĻ āĻāĻ°āĻāĻŋāĨ¤
- āĻļā§āĻ°ā§āĻ¤ā§ āĻā§āĻ¨ā§ āĻā§āĻ¯āĻžāĻ˛ā§ āĻĻāĻŋā§ā§ āĻāĻĻā§āĻ°āĻā§ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻžāĻāĻ āĻāĻ°ā§ āĻ¨āĻŋāĻŦā§ (āĻ¨āĻ¤ā§āĻŦāĻž nil / zero āĻĻāĻŋā§ā§ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻžāĻāĻ āĻšāĻŦā§)
- āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻĻā§āĻ° āĻ¸āĻžāĻāĻ, āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ āĻāĻ¤ āĻšāĻŦā§ āĻ¤āĻž āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻ˛ā§āĻ, āĻĒāĻ°ā§ āĻ¤āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻ āĻ°ā§āĻĨāĻžā§ āĻāĻĻā§āĻ° āĻ¸āĻžāĻāĻ, āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻā§āĻ¯āĻžāĻ˛āĻŋ āĻĒāĻ°āĻŋāĻ°ā§āĻ¤āĻ¨ āĻšāĻŦā§)
āĻāĻ°āĻāĻŽ āĻ āĻŦāĻ¸ā§āĻĨāĻžā§ āĻāĻŽāĻ°āĻž make() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
Â
make() āĻāĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ –
func make(t Type, size ...IntegerType) Type
āĻ˛āĻā§āĻˇā§āĻ¯āĻ¨ā§ā§ āĻŦāĻŋāĻˇā§ – new() āĻāĻ° āĻ¸āĻžāĻĨā§ make() āĻāĻ° āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻšāĻ˛ā§, make() āĻŽā§āĻŽāĻ°āĻŋ āĻāĻĄā§āĻ°ā§āĻ¸ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻ¨āĻž āĻāĻ°ā§, āĻ¯ā§ āĻĄāĻžāĻāĻž āĻāĻžāĻāĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻāĻŋ, āĻ¤āĻžāĻ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻā§, āĻ¸āĻžāĻĨā§ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻžāĻāĻ āĻāĻ°āĻž āĻā§āĻ¯āĻžāĻ˛ā§ āĻā§āĻ˛āĻžāĻ āĻāĻ¸āĻā§āĨ¤ āĻ¤āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻāĻžāĻ¨ā§ āĻāĻ āĻā§āĻ¯āĻžāĻ°āĻŋā§ā§āĻŦāĻ˛ āĻāĻ° āĻā§āĻ¯āĻžāĻ˛ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ° dereference āĻāĻ°āĻ¤ā§ āĻšāĻā§āĻā§ āĻ¨āĻžāĨ¤Â
[ā§Ģ.ā§§.ā§¨.ā§§] make()- āĻ¸ā§āĻ˛āĻžāĻāĻ¸
āĻ¸ā§āĻ˛āĻžāĻāĻ¸ āĻ¨āĻŋā§ā§ āĻāĻžāĻ āĻāĻ°āĻ˛ā§ āĻāĻ° āĻ¸āĻžāĻāĻ āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ āĻĒāĻļāĻ¨āĻžāĻ˛ ā§Šā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻšāĻŋāĻ¸ā§āĻŦā§ āĻāĻŽāĻ°āĻž āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ āĻ āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻžāĻāĻ āĻāĻ°ā§ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¤āĻŦā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¸āĻžāĻāĻ, āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ ā§¨ āĻāĻžāĻ āĻāĻ¨ā§āĻāĻŋāĻāĻžāĻ° āĻšāĻŦā§āĨ¤Â
āĻā§āĻĄā§Â āĻĻā§āĻāĻž āĻ¯āĻžāĻ –
sliceMake := make([]int, 3, 5)
fmt.Println("size: ", len(sliceMake), "||capacity:", cap(sliceMake))
//size:3 || capacity: 5
fmt.Println("full sliceMake:", sliceMake)
//[0 0 0]
sliceMake[0] = 10
//accessing and assigning the 1st element of the slice
fmt.Println("1st index value:", sliceMake[0])
//output: 10
fmt.Println("3rd index value:", sliceMake[2])
//output: 0
fmt.Println("5th index value:", sliceMake[4])
//error: trying to access out of size index
āĻāĻ° āĻāĻāĻāĻĒā§āĻ –
size: 3 || capacity: 5
full sliceMake: [0 0 0]
1st index value: 10
3rd index value: 0
panic: runtime error: index out of range [4] with length 3
āĻāĻāĻžāĻ¨ā§ ā§Šā§ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻāĻž āĻāĻŋāĻ¨ā§āĻ¤ā§ 0 āĻ°ā§ā§ āĻāĻŋā§ā§āĻā§, āĻā§āĻ¨āĻ¨āĻž āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§ āĻŽāĻžāĻ¤ā§āĻ° ā§§āĻŽ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻāĻŋ, āĻŦāĻžāĻāĻŋ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻā§āĻ˛āĻž 0 āĻĻāĻŋā§ā§ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻžāĻāĻāĻĄ āĻšā§ā§ āĻāĻŋāĻ˛ā§āĨ¤
slice āĻāĻ° āĻ¸āĻžāĻāĻ (ā§Š) āĻāĻ° āĻŦāĻžāĻāĻ°ā§āĻ°(ā§ĢāĻŽ āĻāĻ¨āĻĄā§āĻā§āĻ¸) āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ¤ā§ āĻāĻžāĻā§āĻžā§ error āĻāĻ¸ā§āĻā§āĨ¤
āĻāĻ sliceMake āĻāĻ° āĻ¸āĻžāĻāĻ, āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻā§āĻ¯āĻžāĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ –
sliceMake = append(sliceMake, 1)
sliceMake = append(sliceMake, 2)
sliceMake = append(sliceMake, 3)
fmt.Println("size:", len(sliceMake), "||capacity:", cap(sliceMake))
//size:6||capacity:10
fmt.Println("5th index value:", sliceMake[4])
//trying to access the 5th index value after increment
fmt.Println("full sliceMake: ", sliceMake)
//[10 0 0 1 2 3]
ā§Š āĻāĻž element append āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻāĻāĻĒā§āĻ –
size: 6 ||capacity: 10
5th index value: 2
full sliceMake: [0 0 0 1 2 3]
āĻāĻāĻžāĻ¨ā§ āĻ˛āĻā§āĻˇā§āĻ¯āĻ¨ā§ā§āĻ āĻ¸ā§āĻ˛āĻžāĻāĻ¸ length āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻā§āĻ¯āĻžāĻ˛āĻŋ āĻŦāĻžā§āĻŋā§ā§ ā§Ŧ āĻāĻ°āĻ˛āĻžāĻŽ, āĻ¤āĻāĻ¨ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ ā§§ā§Ļ
āĻāĻ°āĻāĻŽ āĻāĻžāĻŦā§,Â
āĻ¯āĻāĻ¨ āĻ¸āĻžāĻāĻ = ā§§ā§§, āĻ¤āĻāĻ¨ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ = ā§¨ā§Ļ
āĻ¯āĻāĻ¨ āĻ¸āĻžāĻāĻ = ā§¨ā§§, āĻ¤āĻāĻ¨ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ = ā§Ēā§Ļ
āĻ¯āĻāĻ¨ āĻ¸āĻžāĻāĻ = ā§Ēā§§, āĻ¤āĻāĻ¨ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ = ā§Žā§Ļ
āĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻ˛āĻžāĻāĻ¸ āĻāĻ° āĻļā§āĻ°ā§āĻ° āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ āĻāĻŋāĻ˛ā§ ā§Ģ, āĻ¤āĻāĻ¨ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ = ā§Ģ, ā§§ā§Ļ, ā§¨ā§Ļ, ā§Ēā§Ļ, ā§Žā§Ļ, ā§§ā§Ŧā§ĻâĻāĻāĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšā§ā§āĻā§, āĻ¯āĻĻāĻŋ ā§Ģ āĻ¨āĻž āĻšā§ā§ ā§Š āĻšāĻ¤ā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ = ā§Š, ā§Ŧ, ā§§ā§¨, ā§§ā§Ž, ā§Šā§Ŧ, âĻâĻ.āĻāĻ āĻšāĻžāĻ°ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¤ā§āĨ¤
[ā§Ģ.ā§§.ā§¨.ā§¨] make()- map
map āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻāĻ, āĻā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻāĻŋ āĻĻā§ā§āĻž āĻ˛āĻžāĻā§ āĻ¨āĻž, āĻāĻžāĻ°āĻŖ map āĻļā§āĻ°ā§āĻ¤ā§āĻ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻŽā§āĻŽāĻ°āĻŋ āĻ¨āĻŋāĻ āĻĨā§āĻā§ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ¨āĻŋā§ā§ āĻ¨ā§ā§ āĻāĻŦāĻ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻ¤ā§ āĻļā§āĻ°ā§āĻ¤ā§ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ¨ā§ā§āĻž āĻŽā§āĻŽāĻ°āĻŋāĻ° āĻŦā§āĻļāĻŋ āĻŽā§āĻŽāĻ°āĻŋāĻ āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻā§āĻ¯āĻžāĻ˛āĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¨āĻŋāĻā§āĻ° āĻā§āĻĄāĻāĻŋ āĻā§ā§āĻžāĻ˛ āĻāĻ°āĻŋ –
mapMake := make(map[string]int)
fmt.Println("map size(initially):", len(mapMake)) // output: 0
mapMake["one"] = 1
mapMake["two"] = 2
mapMake["three"] = 3
fmt.Println("Full map:", mapMake) //output: [one:1 three:3 two:2]
āĻāĻ° āĻāĻāĻāĻĒā§āĻ –
map size(initially): 0
Full map: map[one:1 three:3 two:2]
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻāĻ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻžāĻāĻ āĻāĻ°āĻāĻŋ āĻ¨āĻž, āĻ¤āĻžāĻ āĻ¯āĻ¤ āĻā§āĻ˛āĻž āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻ¨āĻŋāĻā§āĻāĻŋ, map āĻāĻ° āĻ¸āĻžāĻāĻ āĻ¤āĻ¤āĻ āĻšāĻŦā§āĨ¤
āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻāĻ˛ā§ āĻ¸āĻžāĻāĻ(āĻ āĻĒāĻļāĻ¨āĻžāĻ˛) āĻāĻā§ āĻĨā§āĻā§ āĻŦāĻ˛ā§ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ –
mapMake := make(map[string]int, 2)
fmt.Println("map size(before allocating):", len(mapMake)) // output: 0
// after allocating less number of elements as size of the map
mapMake["one"] = 1
fmt.Println("map size(allocation less than size):", len(mapMake)) //output: 1
mapMake["two"] = 2
// after allocating equal number of elements as size of the map
fmt.Println("map size(equal number of allocation):", len(mapMake)) //output: 2
// allocating more than the size of the map
mapMake["three"] = 3
fmt.Println("map size(allocating more than size):", len(mapMake)) //output: 3
āĻāĻ° āĻāĻāĻāĻĒā§āĻ –
map size(before allocating): 0
map size(allocation less than size): 1
map size(equal number of allocation): 2
map size(allocating more than size): 3
āĻāĻāĻžāĻ¨ā§ āĻŽāĻāĻžāĻ° āĻŦā§āĻ¯āĻĒāĻžāĻ° āĻšāĻ˛ā§, āĻāĻŽāĻ°āĻž āĻļā§āĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻāĻ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻžāĻāĻ āĻāĻ°ā§ āĻĻāĻŋāĻ˛ā§āĻ āĻā§āĻ¨ā§ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨ āĻ¨āĻž āĻāĻ°āĻžā§, āĻāĻ° āĻ¸āĻžāĻāĻ 0 āĻ āĻ°ā§ā§ āĻā§āĻā§ āĻāĻŦāĻ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻ¤ā§ āĻ¯āĻ¤āĻā§āĻ˛āĻž āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨ āĻāĻ°āĻāĻŋ map āĻāĻ° āĻ¸āĻžāĻāĻ āĻ¤āĻ¤āĻ āĻšāĻā§āĻā§āĨ¤
[ā§Ģ.ā§§.ā§¨.ā§Š] make() – āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛Â
make() āĻĻāĻŋā§ā§ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ declaration āĻāĻ° āĻ¸āĻŽā§ āĻāĻŽāĻ°āĻž ā§¨ā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°(āĻ āĻĒāĻļāĻ¨āĻžāĻ˛) āĻšāĻŋāĻ¸ā§āĻŦā§ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻāĻ° buffer_size āĻĢāĻŋāĻā§āĻ¸āĻĄ āĻāĻ°ā§ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻ° āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻĻā§āĻ āĻ āĻĨāĻŦāĻž 0 āĻŦāĻ¸āĻžāĻ, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¸ā§āĻāĻžāĻā§ unbuffered āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻŦāĻ˛āĻž āĻšā§āĨ¤
make() āĻĻāĻŋā§ā§ āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ declaration āĻāĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ –
ch := make(chan data_type, buffer_size)
āĻāĻĻāĻžāĻšāĻ°āĻŖ –Â
ch := make(chan int, 10)