Сделано срез, где емкость меньше длины
package main
import fmt "fmt"
func main(){
type b []int
var k = make([]b, 10, 5)
fmt.Printf("%d\n",k[8])
}
При попытке запуска выдается следующая ошибка.
panic: runtime error: makeslice: cap out of range
runtime.panic+0x9e /go/src/pkg/runtime/proc.c:1060
runtime.panic(0x453b00, 0x30020390)
runtime.panicstring+0x94 /go/src/pkg/runtime/runtime.c:116
runtime.panicstring(0x4afd6c, 0x40d80c)
runtime.makeslice+0x70 /go/src/pkg/runtime/slice.c:24
runtime.makeslice(0x44302c, 0xa, 0x0, 0x5, 0x0, ...)
main.main+0x45 C:/GOEXCE~1/basics/DATATY~1/slice.go:8
main.main()
runtime.mainstart+0xf 386/asm.s:93
runtime.mainstart()
runtime.goexit /go/src/pkg/runtime/proc.c:178
runtime.goexit()
----- goroutine created by -----
_rt0_386+0xbf 386/asm.s:80
Мой вопрос: может ли емкость быть меньше длины?
Если «Да», то почему появилась эта ошибка?
И если «нет», почему это ошибка времени выполнения, а почему не время компиляции?