Advertisement
aropan

Go buffered read

Oct 19th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.57 KB | None | 0 0
  1. package main
  2.  
  3. import "fmt"
  4. import "os"
  5. import "bufio"
  6. import "strconv"
  7.  
  8. var reader = bufio.NewReaderSize(os.Stdin, int(1e+7))
  9. var writer = bufio.NewWriter(os.Stdout)
  10. var buffer []byte
  11. func main() {
  12.     defer writer.Flush()
  13.  
  14. }
  15.  
  16. /// Fast functions read
  17.  
  18. func nextString() string {
  19.     var begin int
  20.     var index int = 0
  21.     var token bool = false
  22.     for index < len(buffer) {
  23.         if buffer[index] == ' ' {
  24.             if token {
  25.                 break
  26.             }
  27.         } else {
  28.             if !token {
  29.                 begin = index
  30.                 token = true
  31.             }
  32.         }
  33.         index++
  34.     }
  35.     if !token {
  36.         var err error
  37.         buffer, _, err = reader.ReadLine()
  38.         if err != nil {
  39.             panic(err)
  40.         }
  41.         return nextString()
  42.     }
  43.     result := string(buffer[begin:index])
  44.     buffer = buffer[index:]
  45.     return result
  46. }
  47.  
  48. func nextInt() int {
  49.     ret, _ := strconv.Atoi(nextString())
  50.     return ret
  51. }
  52.  
  53. func nextInt64() int64 {
  54.     ret, _ := strconv.ParseInt(nextString(), 10, 64)
  55.     return ret
  56. }
  57.  
  58. func nextFloat() float64 {
  59.     ret, _ := strconv.ParseFloat(nextString(), 64)
  60.     return ret
  61. }
  62.  
  63. func debug(a ...interface{}) {
  64.     fmt.Fprintln(os.Stderr, a...)
  65. }
  66.  
  67. func debugf(format string, a ...interface{}) {
  68.     fmt.Fprintf(os.Stderr, format, a...)
  69. }
  70.  
  71. func print(a ...interface{}) {
  72.     fmt.Fprint(writer, a...)
  73. }
  74.  
  75. func println(a ...interface{}) {
  76.     fmt.Fprintln(writer, a...)
  77. }
  78.  
  79. func printf(format string, a ...interface{}) {
  80.     fmt.Fprintf(writer, format, a...)
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement