Slide 14
Slide 14 text
https://github.com/golang/go/blob/master/src/runti
me/slice.go
func growslice(et *_type, old slice, cap int) slice {
~略~
newcap := old.cap
doublecap := newcap + newcap
if cap > doublecap {
newcap = cap
} else {
if old.len < 1024 {
newcap = doublecap
} else {
// Check 0 < newcap to detect overflow
// and prevent an infinite loop.
for 0 < newcap && newcap < cap {
newcap += newcap / 4
}
~略~