Guest User

Untitled

a guest
Feb 20th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. // 函数 FindDigits 将一个文件加载到内存,然后搜索其中所有的数字并返回一个切片。
  2.  
  3. var digitRegexp = regexp.MustCompile("[0-9]+")
  4.  
  5. func FindDigits(filename string) []byte {
  6. b, _ := ioutil.ReadFile(filename)
  7. return digitRegexp.Find(b)
  8. }
  9. // 这段代码可以顺利运行,但返回的 []byte 指向的底层是整个文件的数据。只要该返回的切片不被释放,垃圾回收器就不能释放整个文件所占用的内存。换句话说,一点点有用的数据却占用了整个文件的内存。
  10.  
  11. // 想要避免这个问题,可以通过拷贝我们需要的部分到一个新的切片中:
  12.  
  13. func FindDigits(filename string) []byte {
  14. b, _ := ioutil.ReadFile(filename)
  15. b = digitRegexp.Find(b)
  16. c := make([]byte, len(b))
  17. copy(c, b)
  18. return c
  19. }
Add Comment
Please, Sign In to add comment