golang文件讀取-按指定BUFF大小讀取方式
a.txt文件內(nèi)容:
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個(gè)字節(jié)的大小并輸出
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!
補(bǔ)充:golang 數(shù)組append前后的地址變化
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
func main() {
res := make([]int, 0)
res = append(res, 1) //同函數(shù)內(nèi)append前后地址不變
for i, v := range res {
println(i,v)
}
}
打?。?/p>
0 1
func solve(res []int) {
res = append(res, 1) //不在同一函數(shù)內(nèi)append前后地址變
}
func main() {
res := make([]int, 0)
for i, v := range res {
println(i,v)
}
}
打?。?/p>
空
因?yàn)閍ppend改變了原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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
盤點(diǎn)幾種Go語(yǔ)言開(kāi)發(fā)的IDE
Go語(yǔ)言作為一種新興的編程語(yǔ)言,近年來(lái)受到了越來(lái)越多的關(guān)注,它以其簡(jiǎn)潔、高效和并發(fā)性能而聞名,被廣泛應(yīng)用于各種軟件開(kāi)發(fā)項(xiàng)目中,本文將介紹幾種常用的Go語(yǔ)言IDE,并對(duì)它們進(jìn)行比較,幫助開(kāi)發(fā)者根據(jù)自己的需求選擇合適的工具,需要的朋友可以參考下2023-11-11
實(shí)用的Go語(yǔ)言開(kāi)發(fā)工具及使用示例
這篇文章主要為大家介紹了實(shí)用的Go語(yǔ)言開(kāi)發(fā)工具及使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
一文詳解Golang中字符串的常見(jiàn)錯(cuò)誤
這篇文章主要來(lái)和大家深入討論一下Golang?中的字符串,并查看一些不同的場(chǎng)景,以避免常見(jiàn)錯(cuò)誤,對(duì)大家掌握golang有一定的幫助,需要的可以了解下2023-10-10
IdeaGo啟動(dòng)報(bào)錯(cuò)Failed to create JVM的問(wèn)題解析
這篇文章主要介紹了IdeaGo啟動(dòng)報(bào)錯(cuò)Failed to create JVM的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
利用Golang實(shí)現(xiàn)TCP連接的雙向拷貝詳解
公司中遇到了一個(gè)使用golang編寫(xiě)的agent程序,所以這篇文章主要給大家介紹了關(guān)于利用Go如何實(shí)現(xiàn)TCP連接的雙向拷貝的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考,下面隨著小編來(lái)一起看看吧。2017-09-09
淺談golang package中init方法的多處定義及運(yùn)行順序問(wèn)題
這篇文章主要介紹了淺談golang package中init方法的多處定義及運(yùn)行順序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05
Go語(yǔ)言實(shí)現(xiàn)登錄驗(yàn)證代碼案例
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)登錄驗(yàn)證代碼案例,代碼和圖文講解的很清晰,有感興趣的可以學(xué)習(xí)下2021-03-03

