package main import ( "fmt" "math/rand" "time" ) // first creator func rslice(size int, r1 *rand.Rand) []int { rtn := make([]int, size) for i := 0; i < size; i++ { rtn[i] = r1.Intn(100) } return rtn } func maxSubslice(slc []int, siz int) []int { if siz > len(slc) { return nil } if siz == len(slc) { return slc } bestLoc := -1 bestSum := 0 for i := 0; i < (len(slc) - siz); i++ { summ := 0 for j := 0; j < siz; j++ { summ += slc[i+j] } //fmt.Printf("%d %d\n", i, summ) if i == 0 || summ > bestSum { bestLoc = i bestSum = summ } } return slc[bestLoc : bestLoc+siz] } func main() { s1 := rand.NewSource(time.Now().UnixNano()) r1 := rand.New(s1) rr := rslice(10, r1) fmt.Println(rr) subSli := maxSubslice(rr, 2) fmt.Println(subSli) }