本文主要介紹了Go語(yǔ)言中文件讀寫(xiě)的相關(guān)操作。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),鹽田企業(yè)網(wǎng)站建設(shè),鹽田品牌網(wǎng)站建設(shè),網(wǎng)站定制,鹽田網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,鹽田網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
文件是什么?
計(jì)算機(jī)中的文件是存儲(chǔ)在外部介質(zhì)(通常是磁盤(pán))上的數(shù)據(jù)集合,文件分為文本文件和二進(jìn)制文件。
os.Open() 函數(shù)能夠打開(kāi)一個(gè)文件,返回一個(gè) *File 和一個(gè) err 。對(duì)得到的文件實(shí)例調(diào)用 close() 方法能夠關(guān)閉文件。
為了防止文件忘記關(guān)閉,我們通常使用defer注冊(cè)文件關(guān)閉語(yǔ)句。
Read方法定義如下:
它接收一個(gè)字節(jié)切片,返回讀取的字節(jié)數(shù)和可能的具體錯(cuò)誤,讀到文件末尾時(shí)會(huì)返回 0 和 io.EOF 。 舉個(gè)例子:
使用for循環(huán)讀取文件中的所有數(shù)據(jù)。
bufio是在file的基礎(chǔ)上封裝了一層API,支持更多的功能。
io/ioutil 包的 ReadFile 方法能夠讀取完整的文件,只需要將文件名作為參數(shù)傳入。
os.OpenFile() 函數(shù)能夠以指定模式打開(kāi)文件,從而實(shí)現(xiàn)文件寫(xiě)入相關(guān)功能。
其中:
name :要打開(kāi)的文件名 flag :打開(kāi)文件的模式。 模式有以下幾種:
perm :文件權(quán)限,一個(gè)八進(jìn)制數(shù)。r(讀)04,w(寫(xiě))02,x(執(zhí)行)01。
//沒(méi)問(wèn)題的,可以make,應(yīng)該是你的主線程執(zhí)行完直接退出了,導(dǎo)致協(xié)程沒(méi)機(jī)會(huì)執(zhí)行,所以
//你看不到輸出而已。
func?main()?{
pix?:=?make([]uint8,?26707968)
fmt.Println("main?len:",len(pix))
go?func()?{
pix?:=?make([]uint8,?3300500)
fmt.Println("go?len:",len(pix))
}()
time.Sleep(time.Second)
}
go語(yǔ)言中的if語(yǔ)句和其他語(yǔ)言中的類(lèi)似,都是根據(jù)給定的條件表達(dá)式運(yùn)算結(jié)果來(lái),判斷執(zhí)行流程。
注意:在go語(yǔ)言中 布爾表達(dá)式不用使用括號(hào)。
根據(jù)布爾值flag判斷
程序運(yùn)行結(jié)果
初始變量可以聲明在布爾表達(dá)式里面,注意它的作用域
程序運(yùn)行結(jié)果
注意:不能使用0或非0表示真假
go語(yǔ)言if語(yǔ)句使用提示:
go語(yǔ)言中的if else語(yǔ)句可以根據(jù)給定條件二選一。
比較兩個(gè)數(shù)的大小
運(yùn)行結(jié)果
判斷一個(gè)數(shù)是奇數(shù)還是偶數(shù)
運(yùn)行結(jié)果
判斷一個(gè)人是否成年
運(yùn)行結(jié)果
特殊寫(xiě)法,在if前面添加執(zhí)行語(yǔ)句
運(yùn)行結(jié)果
go語(yǔ)言if語(yǔ)句使用提示:
go語(yǔ)言if語(yǔ)句可以進(jìn)行多重嵌套使用,進(jìn)行多重判斷。
根據(jù)分?jǐn)?shù)判斷等級(jí)
運(yùn)行結(jié)果
同樣也可以寫(xiě)成這樣
運(yùn)行結(jié)果
輸入星期幾的第一個(gè)字母來(lái)判斷一下是星期幾,如果第一個(gè)字母一樣,則繼續(xù)判斷第二個(gè)字母
運(yùn)行結(jié)果
go語(yǔ)言if語(yǔ)句可以嵌套多級(jí)進(jìn)行判斷。
判斷三個(gè)數(shù)的大小
運(yùn)行結(jié)果
判斷男生還是女生,還有是否成年
運(yùn)行結(jié)果
import "workname/packetfolder"
導(dǎo)入多個(gè)包
方法調(diào)用 包名.函數(shù)//不是函數(shù)或結(jié)構(gòu)體所處文件或文件夾名
packagename.Func()
前面加個(gè)點(diǎn)表示省略調(diào)用,那么調(diào)用該模塊里面的函數(shù),可以不用寫(xiě)模塊名稱(chēng)了:
當(dāng)導(dǎo)入一個(gè)包時(shí),該包下的文件里所有init()函數(shù)都會(huì)被執(zhí)行,然而,有些時(shí)候我們并不需要把整個(gè)包都導(dǎo)入進(jìn)來(lái),僅僅是是希望它執(zhí)行init()函數(shù)而已。下劃線的作用僅僅是為了調(diào)用init()函數(shù),所以無(wú)法通過(guò)包名來(lái)調(diào)用包中的其他函數(shù)
import _ package
變量聲明必須要使用否則會(huì)報(bào)錯(cuò)。
全局變量運(yùn)行聲明但不使用。
func 函數(shù)名 (參數(shù)1,參數(shù)2,...) (返回值a 類(lèi)型a, 返回值b 類(lèi)型b,...)
func 函數(shù)名 (參數(shù)1,參數(shù)2,...) (返回值類(lèi)型1, 返回值類(lèi)型2,...)
func (this *結(jié)構(gòu)體名) 函數(shù)名(參數(shù) string) (返回值類(lèi)型1, 返回值類(lèi)型2){}
使用大小來(lái)區(qū)分函數(shù)可見(jiàn)性
大寫(xiě)是public類(lèi)型
小寫(xiě)是private類(lèi)型
func prifunc int{}
func pubfunc int{}
聲明靜態(tài)變量
const value int
定義變量
var value int
聲明一般類(lèi)型、接口和結(jié)構(gòu)體
聲明函數(shù)
func function () int{}
go里面所有的空值對(duì)應(yīng)如下
通道類(lèi)型
內(nèi)建函數(shù) new 用來(lái)分配內(nèi)存,它的第一個(gè)參數(shù)是一個(gè)類(lèi)型,不是一個(gè)值,它的返回值是一個(gè)指向新分配類(lèi)型零值的指針
func new(Type) *Type
[這位博主有非常詳細(xì)的分析]
Go 語(yǔ)言支持并發(fā),我們只需要通過(guò) go 關(guān)鍵字來(lái)開(kāi)啟 goroutine 即可。
goroutine 是輕量級(jí)線程,goroutine 的調(diào)度是由 Golang 運(yùn)行時(shí)進(jìn)行管理的。
同一個(gè)程序中的所有 goroutine 共享同一個(gè)地址空間。
語(yǔ)法格式如下:
通道(channel)是用來(lái)傳遞數(shù)據(jù)的一個(gè)數(shù)據(jù)結(jié)構(gòu)。
通道的聲明
通道可用于兩個(gè) goroutine 之間通過(guò)傳遞一個(gè)指定類(lèi)型的值來(lái)同步運(yùn)行和通訊。操作符 - 用于指定通道的方向,發(fā)送或接收。如果未指定方向,則為雙向通道。
[這里有比較詳細(xì)的用例]
go里面的空接口可以指代任何類(lèi)型(無(wú)論是變量還是函數(shù))
聲明空接口
go里面的的強(qiáng)制類(lèi)型轉(zhuǎn)換語(yǔ)法為:
int(data)
如果是接口類(lèi)型的強(qiáng)制轉(zhuǎn)成其他類(lèi)型的語(yǔ)法為:
go里面的強(qiáng)制轉(zhuǎn)換是將值復(fù)制過(guò)去,所以在數(shù)據(jù)量的時(shí)候有比較高的運(yùn)行代價(jià)
Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中提供了sort包對(duì)整型,浮點(diǎn)型,字符串型切片進(jìn)行排序,檢查一個(gè)切片是否排好序,使用二分法搜索函數(shù)在一個(gè)有序切片中搜索一個(gè)元素等功能。
關(guān)于sort包內(nèi)的函數(shù)說(shuō)明與使用,請(qǐng)查看
在這里簡(jiǎn)單講幾個(gè)sort包中常用的函數(shù)
在Go語(yǔ)言中,對(duì)字符串的排序都是按照字節(jié)排序,也就是說(shuō)在對(duì)字符串排序時(shí)是區(qū)分大小寫(xiě)的。
二分搜索算法
Go語(yǔ)言中提供了一個(gè)使用二分搜索算法的sort.Search(size,fn)方法:每次只需要比較㏒?n個(gè)元素,其中n為切片中元素的總數(shù)。
sort.Search(size,fn)函數(shù)接受兩個(gè)參數(shù):所處理的切片的長(zhǎng)度和一個(gè)將目標(biāo)元素與有序切片的元素相比較的函數(shù),該函數(shù)是一個(gè)閉包,如果該有序切片是升序排列,那么在判斷時(shí)使用 有序切片的元素 = 目標(biāo)元素。該函數(shù)返回一個(gè)int值,表示與目標(biāo)元素相同的切片元素的索引。
在切片中查找出某個(gè)與目標(biāo)字符串相同的元素索引
新聞標(biāo)題:go語(yǔ)言中如何找及格分?jǐn)?shù),goe分?jǐn)?shù)
URL網(wǎng)址:http://chinadenli.net/article6/heedog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)