| // Copyright 2012 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package main | |
| import ( | |
| "io/ioutil" | |
| "regexp" | |
| ) | |
| func AppendByte(slice []byte, data ...byte) []byte { | |
| m := len(slice) | |
| n := m + len(data) | |
| if n > cap(slice) { // if necessary, reallocate | |
| // allocate double what's needed, for future growth. | |
| newSlice := make([]byte, (n+1)*2) | |
| copy(newSlice, slice) | |
| slice = newSlice | |
| } | |
| slice = slice[0:n] | |
| copy(slice[m:n], data) | |
| return slice | |
| } | |
| // STOP OMIT | |
| // Filter returns a new slice holding only | |
| // the elements of s that satisfy fn. | |
| func Filter(s []int, fn func(int) bool) []int { | |
| var p []int // == nil | |
| for _, i := range s { | |
| if fn(i) { | |
| p = append(p, i) | |
| } | |
| } | |
| return p | |
| } | |
| // STOP OMIT | |
| var digitRegexp = regexp.MustCompile("[0-9]+") | |
| func FindDigits(filename string) []byte { | |
| b, _ := ioutil.ReadFile(filename) | |
| return digitRegexp.Find(b) | |
| } | |
| // STOP OMIT | |
| func CopyDigits(filename string) []byte { | |
| b, _ := ioutil.ReadFile(filename) | |
| b = digitRegexp.Find(b) | |
| c := make([]byte, len(b)) | |
| copy(c, b) | |
| return c | |
| } | |
| // STOP OMIT | |
| func main() { | |
| // place holder; no need to run | |
| } |