goscript-engine 0.1.0

goscript engine
Documentation
package main

import "fmt"

func sum(s []int, c chan int) {
	sum := 0
	for _, v := range s {
		sum += v
	}
	c <- sum // send sum to c
	fmt.Println("c len: ", len(c))
}

func testWithCap(capacity int) {
	s := []int{7, 2, 8, -9, 4, 0}

	c := make(chan int, capacity)
	go sum(s[:len(s)/2], c)
	go sum(s[len(s)/2:], c)
	
	x, y := <-c, <-c // receive from c

	assert(x + y == 12)
	fmt.Println(x, y, x+y)

	
	go func() {c <- 888}()
	nn, ok := <- c
	assert(nn == 888)
	assert(ok)

	close(c)
	assert(<-c == 0)
	fmt.Println(<-c)
	m := <- c
	assert(m == 0)
	n, ok := <- c
	assert(n == 0)
	assert(!ok)

	fmt.Println(m, n, nn)

	assert(cap(c) == capacity)
}


func main() {
	testWithCap(0)
	testWithCap(1)
	testWithCap(2)
	testWithCap(3)
	testWithCap(999)
}