github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/test/execution/slices/cap.go (about)

     1  // RUN: llgo -o %t %s
     2  // RUN: %t 2>&1 | FileCheck %s
     3  
     4  // CHECK: 0 0
     5  // CHECK-NEXT: 0 0
     6  // CHECK-NEXT: 0 0
     7  // CHECK-NEXT: 1 1
     8  // CHECK-NEXT: 1 1
     9  // CHECK-NEXT: 1 2
    10  // CHECK-NEXT: 2 9
    11  // CHECK-NEXT: 3 9
    12  // CHECK-NEXT: 999
    13  // CHECK-NEXT: 999
    14  // CHECK-NEXT: 1 2
    15  
    16  package main
    17  
    18  func test(l, c int) {
    19  	var s []int
    20  	if l != -1 {
    21  		if c == -1 {
    22  			s = make([]int, l)
    23  		} else {
    24  			s = make([]int, l, c)
    25  		}
    26  	}
    27  	println(len(s), cap(s))
    28  }
    29  
    30  func main() {
    31  	test(-1, -1)
    32  	test(0, -1)
    33  	test(0, 0)
    34  	test(1, -1)
    35  	test(1, 1)
    36  	test(1, 2)
    37  
    38  	// make sure capacity is transferred to slice
    39  	s := make([]int, 5, 10)
    40  	s1 := s[1:3]
    41  	println(len(s1), cap(s1))
    42  
    43  	s2 := append(s1, 999)
    44  	println(len(s2), cap(s2))
    45  	println(s2[2])
    46  	println(s[3])
    47  
    48  	s3 := s1[0:1:2]
    49  	println(len(s3), cap(s3))
    50  }