golang文件读取-按指定BUFF大小读取方式

 更新时间:2020年12月22日 11:39:58   作者:robertkun  
这篇文章主要介绍了golang文件读取-按指定BUFF大小读取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

a.txt文件内容:

ABCDEFGHI

HELLO GOLANG

package main
import (
  "fmt"
  "os"
  "io"
)
func main() {
  fileName := "C:\\Robert\\日志分析\\tools_go\\vdn_sqlInterface\\a.txt"
  file, err := os.OpenFile(fileName, os.O_RDWR, 0666)
  if err != nil {
    fmt.Println("Open file error!", err)
    return
  }
  defer file.Close()
  stat, err := file.Stat()
  if err != nil {
    panic(err)
  }
  var size = stat.Size()
  fmt.Println("file size=", size)
  // define read block size = 2
  buf := make([]byte, 2)
  for {
    length, err := file.Read(buf)
    if err != nil {
      if err == io.EOF {
        break
      } else {
        fmt.Println("Read file error!", err)
        return
      }
    }
    fmt.Println(length, string(buf))
  }
  fmt.Println("File read ok!")
}

输出:

每次读取2个字节的大小并输出

file size= 23
2 AB
2 CD
2 EF
2 GH
2 I
2
H
2 EL
2 LO
2 G
2 OL
2 AN
1 GN
File read ok!

补充:golang 数组append前后的地址变化

我就废话不多说了,大家还是直接看代码吧~

func main() {
 res := make([]int, 0)
 res = append(res, 1) //同函数内append前后地址不变
 for i, v := range res {
 println(i,v)
 }
}

打印:

0 1

func solve(res []int) {
 res = append(res, 1) //不在同一函数内append前后地址变
}
 
func main() {
 res := make([]int, 0)
 for i, v := range res {
 println(i,v)
 }
}

打印:

因为append改变了原res的地址。所以改为:

func solve(res []int) []int {
 return append(res, 1)
}
 
func main() {
 res := make([]int, 0)
 for i, v := range solve(res) {
 println(i,v)
 }
}

打印:

0 1

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 盘点几种Go语言开发的IDE

    盘点几种Go语言开发的IDE

    Go语言作为一种新兴的编程语言,近年来受到了越来越多的关注,它以其简洁、高效和并发性能而闻名,被广泛应用于各种软件开发项目中,本文将介绍几种常用的Go语言IDE,并对它们进行比较,帮助开发者根据自己的需求选择合适的工具,需要的朋友可以参考下
    2023-11-11
  • 实用的Go语言开发工具及使用示例

    实用的Go语言开发工具及使用示例

    这篇文章主要为大家介绍了实用的Go语言开发工具及使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Golang中channel使用的一些小技巧

    Golang中channel使用的一些小技巧

    这篇文章主要介绍了Golang中channel使用的一些小技巧,本文讲解了关闭2次、读取的时候channel提前关闭了、向已经关闭的channel写数据等技巧及这实例代码,需要的朋友可以参考下
    2015-07-07
  • 一文详解Golang中字符串的常见错误

    一文详解Golang中字符串的常见错误

    这篇文章主要来和大家深入讨论一下Golang 中的字符串,并查看一些不同的场景,以避免常见错误,对大家掌握golang有一定的帮助,需要的可以了解下
    2023-10-10
  • 浅谈Go数组比切片好在哪

    浅谈Go数组比切片好在哪

    Go1.17 会正式支持切片转换到数据,不再需要用以前那种骚办法了,本文就谈谈Go数组比切片好在哪,感兴趣的可以了解一下
    2021-09-09
  • IdeaGo启动报错Failed to create JVM的问题解析

    IdeaGo启动报错Failed to create JVM的问题解析

    这篇文章主要介绍了IdeaGo启动报错Failed to create JVM的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 利用Golang实现TCP连接的双向拷贝详解

    利用Golang实现TCP连接的双向拷贝详解

    公司中遇到了一个使用golang编写的agent程序,所以这篇文章主要给大家介绍了关于利用Go如何实现TCP连接的双向拷贝的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考,下面随着小编来一起看看吧。
    2017-09-09
  • 浅谈golang package中init方法的多处定义及运行顺序问题

    浅谈golang package中init方法的多处定义及运行顺序问题

    这篇文章主要介绍了浅谈golang package中init方法的多处定义及运行顺序问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Go语言实现登录验证代码案例

    Go语言实现登录验证代码案例

    这篇文章主要介绍了Go语言实现登录验证代码案例,代码和图文讲解的很清晰,有感兴趣的可以学习下
    2021-03-03
  • 关于golang test缓存问题

    关于golang test缓存问题

    这篇文章主要介绍了关于golang test缓存问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09

最新评论