Skip to content

Instantly share code, notes, and snippets.

@stakhiv
Created April 11, 2015 06:51
Show Gist options
  • Save stakhiv/f8f87f6959cf51a00d22 to your computer and use it in GitHub Desktop.
Save stakhiv/f8f87f6959cf51a00d22 to your computer and use it in GitHub Desktop.
package bench
import (
"bufio"
"bytes"
"errors"
"fmt"
"io"
"os"
)
func Find(path, s string) (string, error) {
if s == "" {
return "", errors.New("")
}
var err error
var file *os.File
file, err = os.Open(path)
if err != nil {
return "", err
}
var (
r *bufio.Reader = bufio.NewReader(file)
line string
position int
i int
res bytes.Buffer
ln int
first bool = true
lineLength int
sLength int = len(s)
)
for {
line, err = r.ReadString('\n')
if err == io.EOF {
break
}
ln++
lineLength = len(line)
Loop:
for position = 0; position < lineLength; position++ {
for i = 0; i < sLength; i++ {
if s[i] != line[position+i] {
continue Loop
}
}
if first {
first = false
res.WriteString(fmt.Sprintf("%v:%v", ln, position))
} else {
res.WriteString(fmt.Sprintf(",%v:%v", ln, position))
}
}
}
return res.String(), nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment