add: slice internals exercises

This commit is contained in:
Inanc Gumus
2019-03-04 20:30:18 +03:00
parent fe38be1025
commit 2c7ee6ebf5
14 changed files with 598 additions and 42 deletions

View File

@ -0,0 +1,34 @@
package main
// ---------------------------------------------------------
// EXERCISE: Observe the capacity growth
//
// Write a program that loops 10 million times to append an element
// to a slice, on each step of the loop. Observe the capacity.
//
//
// STEPS
//
// 1. Create a nil slice
//
// 2. Loop 10e6 times
//
// 3. On each loop step: Append an element to the slice
//
// 4. Only print the length and capacity of the slice everytime
// the capacity changes.
//
// 5. Print also the growth rate by calculating the previous and
// the current capacity.
//
//
// EXPECTED OUTPUT
//
// len:0 cap:0 growth:NaN
// len:1 cap:1 growth:+Inf
// len:2 cap:2 growth:2.00
// ... and so on.
//
// ---------------------------------------------------------
func main() {}

View File

@ -0,0 +1,29 @@
// For more tutorials: https://blog.learngoprogramming.com
//
// Copyright © 2018 Inanc Gumus
// Learn Go Programming Course
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
//
package main
import "fmt"
func main() {
var (
nums []int
oldCap float64
)
for len(nums) < 10e6 {
c := float64(cap(nums))
if c == 0 || c != oldCap {
fmt.Printf("len:%-15d cap:%-15g growth:%-15.2f\n",
len(nums), c, c/oldCap)
}
oldCap = c
nums = append(nums, 1)
}
}