mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-08 13:03:39 +00:00
Basic support for slices
This commit is contained in:
@@ -23,6 +23,11 @@ func main() {
|
||||
println("sumrange(100) =", sumrange(100))
|
||||
println("strlen foo:", strlen("foo"))
|
||||
|
||||
foo := []int{1, 2, 4, 5}
|
||||
println("len/cap foo:", len(foo), cap(foo))
|
||||
println("foo[3]:", foo[3])
|
||||
println("sum foo:", sum(foo))
|
||||
|
||||
thing := &Thing{"foo"}
|
||||
println("thing:", thing.String())
|
||||
printItf(5)
|
||||
@@ -93,3 +98,11 @@ func sumrange(n int) int {
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
func sum(l []int) int {
|
||||
sum := 0
|
||||
for _, n := range l {
|
||||
sum += n
|
||||
}
|
||||
return sum
|
||||
}
|
||||
|
||||
+11
-2
@@ -19,11 +19,20 @@ func _panic(message interface{}) {
|
||||
abort()
|
||||
}
|
||||
|
||||
func boundsCheck(outOfRange bool) {
|
||||
if outOfRange {
|
||||
// Check for bounds in *ssa.IndexAddr and *ssa.Lookup.
|
||||
func lookupBoundsCheck(length, index int) {
|
||||
if index < 0 || index >= length {
|
||||
// printstring() here is safe as this function is excluded from bounds
|
||||
// checking.
|
||||
printstring("panic: runtime error: index out of range\n")
|
||||
abort()
|
||||
}
|
||||
}
|
||||
|
||||
// Check for bounds in *ssa.Slice
|
||||
func sliceBoundsCheck(length, low, high uint) {
|
||||
if !(0 <= low && low <= high && high <= length) {
|
||||
printstring("panic: runtime error: slice out of range\n")
|
||||
abort()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user