When you exceed capacity, append creates a new array:
nums := make([]int, 3, 3)
nums = append(nums, 4) // New array allocated
Go roughly doubles the capacity when growing. This amortizes allocation cost. Don't worry about exact growth. Just know that frequent small appends are efficient.