java buff指定的地方_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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值