最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言中的IO操作及Flag包的用法

 更新時(shí)間:2022年07月19日 08:30:57   作者:奮斗的大橙子  
這篇文章介紹了Go語(yǔ)言中的IO操作及Flag包的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、格式化輸入和輸出

1.從終端獲取用戶的輸入

fmt.Scanf 空格作為分隔符,占位符和格式化輸出的一致

fmt.Scan 從終端獲取用戶的輸入,存儲(chǔ)在Scanln中的參數(shù)里,空格和換行符作為分隔符

fmt.Scanln 從終端獲取用戶的輸入,存儲(chǔ)在Scanln中的參數(shù)里,空格作為分隔符,換行符作為結(jié)束

Scanf 例子:

package main
 
import (
   "fmt"
)
 
func TestScanf(){
   var a int
   var b string
   var c float32
   fmt.Scanf("%d%s%f",&a,&b,&c)
   fmt.Printf("a=%d b=%s c=%f",a,b,c)
}
 
func main(){
   TestScanf()
}

結(jié)果:

> 111 abvc 111
a=111 b=abvc c=111.000000

這里我們是通過(guò)一行輸入的,并且是以空格作為分割的,但是如果想通過(guò)多行輸入,那么在Windows下Scanf可能會(huì)存在一個(gè)問(wèn)題,如下:

func TestScanf(){
   var a int
   var b string
   var c float32
   fmt.Scanf("%d",&a)
   fmt.Scanf("%s",&b)
   fmt.Scanf("%f",&c)
   fmt.Printf("a=%d b=%s c=%f",a,b,c)
}

然后我們?cè)趙indows下面去運(yùn)行一下

由上面的我們可以看到,只接受到了第一個(gè)值,第二值輸入之后回車,發(fā)現(xiàn)b和c都沒有值。主要是由于Windows下面,回車會(huì) 自動(dòng)加上 \r\n。

如果想要正確的獲取這個(gè)值,可以修改如下:在每一個(gè)scanf上面都加上“\n”

func TestScanf(){
   var a int
   var b string
   var c float32
   fmt.Scanf("%d\n",&a)
   fmt.Scanf("%s\n",&b)
   fmt.Scanf("%f\n",&c)
   fmt.Printf("a=%d b=%s c=%f \n",a,b,c)
}

Scan例子:

func TestScan(){
   var a int
   var b string
   var c float32
   fmt.Scan(&a,&b,&c)
   fmt.Printf("a=%d b=%s c=%f \n",a,b,c)
}

Scanln例子:

func TestScanln(){
   var a int
   var b string
   var c float32
   fmt.Scanln(&a)
   fmt.Scanln(&b)
   fmt.Scanln(&c)
   fmt.Printf("a=%d b=%s c=%f \n",a,b,c)
}

2.從字符串中獲取

上面是從終端輸入的字符串中提取數(shù)據(jù),然后還可以從一個(gè)已經(jīng)存在的字符串中提取。

fmt.Sscanf 空格作為分隔符,占位符和格式化輸出的一致

fmt.Sscan 從字符串獲取用戶的輸入,存儲(chǔ)在Scanln中的參數(shù)里,空格和換行符作為分隔符

fmt.Sscanln 從字符串獲取用戶的輸入,存儲(chǔ)在Scanln中的參數(shù)里,空格作為分隔符,換行符作為結(jié)束

下面的例子就是從str中提取整數(shù)、字符串和浮點(diǎn)數(shù)

func TestSscanf(){
   var a int
   var b string
   var c float32
   str := "123 hello 111.1"
   fmt.Sscanf(str,"%d%s%f",&a,&b,&c)
   fmt.Printf("a=%d b=%s c=%f \n",a,b,c)
}

備注:一定要傳地址進(jìn)去,否則修改是變量的副本,也就是說(shuō)讀取不到用戶的輸入了。

3.從文件中獲取

fmt.Fscanf 空格作為分隔符,占位符和格式化輸出的一致

fmt.Fscan 從文件獲取用戶的輸入,存儲(chǔ)在Scanln中的參數(shù)里,空格和換行符作為分隔符

fmt.Fscanln 從文件獲取用戶的輸入,存儲(chǔ)在Scanln中的參數(shù)里,空格作為分隔符,換行符作為結(jié)束

4.終端輸入輸出的原理

終端相當(dāng)于是一個(gè)文件, 所以可以用 os.stdin 和os.stdout 作為輸入和輸出。查看源碼可以看到他們其實(shí)就是*File

二、bufio包的使用

為了完善文件本身讀取性能差的問(wèn)題,增加了緩沖區(qū)操作。

package main
 
import (
   "bufio"
   "os"
)
 
func main() {
   reader := bufio.NewReader(os.Stdin)
   buf, _ := reader.ReadBytes('\n')
   println((string)(buf))
}

備注:這里可以看到NewReader的參數(shù)是一個(gè)io.Reader接口 , os.Stdin則是返回一個(gè)*File ,由于File實(shí)現(xiàn)了io.Reader的Read方法,所以可以接受File作為參數(shù)(鴨子類型)。

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

您可能感興趣的文章:

相關(guān)文章

  • golang移除數(shù)組中重復(fù)的元素操作

    golang移除數(shù)組中重復(fù)的元素操作

    這篇文章主要介紹了golang移除數(shù)組中重復(fù)的元素操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Golang數(shù)組的傳遞詳解

    Golang數(shù)組的傳遞詳解

    今天小編就為大家分享一篇關(guān)于Golang數(shù)組的傳遞詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • golang的database.sql包和事務(wù)處理操作步驟

    golang的database.sql包和事務(wù)處理操作步驟

    事務(wù)是數(shù)據(jù)庫(kù)操作中的一個(gè)邏輯單元,由一系列的數(shù)據(jù)庫(kù)操作組成,這一系列操作要么全部執(zhí)行并且提交,要么全部回滾,確保數(shù)據(jù)的一致性和完整性,這篇文章主要介紹了golang的database.sql包和事務(wù)處理操作步驟,需要的朋友可以參考下
    2025-04-04
  • go語(yǔ)言實(shí)現(xiàn)通過(guò)FTP庫(kù)自動(dòng)上傳web日志

    go語(yǔ)言實(shí)現(xiàn)通過(guò)FTP庫(kù)自動(dòng)上傳web日志

    這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)通過(guò)FTP庫(kù)自動(dòng)上傳web日志,非常簡(jiǎn)單實(shí)用,需要的小伙伴快來(lái)參考下吧。
    2015-03-03
  • 解決golang 反射interface{}做零值判斷的一個(gè)重大坑

    解決golang 反射interface{}做零值判斷的一個(gè)重大坑

    這篇文章主要介紹了解決golang 反射interface{}做零值判斷的一個(gè)重大坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Go uuid庫(kù)的具體使用

    Go uuid庫(kù)的具體使用

    在現(xiàn)代軟件開發(fā)中,全球唯一標(biāo)識(shí)符(UUID)在許多場(chǎng)景中發(fā)揮著重要的作用,本文主要介紹了Go uuid庫(kù)的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • 細(xì)細(xì)探究Go 泛型generic設(shè)計(jì)

    細(xì)細(xì)探究Go 泛型generic設(shè)計(jì)

    這篇文章主要帶大家細(xì)細(xì)探究了Go 泛型generic設(shè)計(jì)及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • golang中常見的logrus日志庫(kù)

    golang中常見的logrus日志庫(kù)

    這篇文章主要介紹了golang中常見的logrus日志庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • golang return省略用法說(shuō)明

    golang return省略用法說(shuō)明

    這篇文章主要介紹了golang return省略用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go語(yǔ)言中?Print?Printf和Println?的區(qū)別解析

    Go語(yǔ)言中?Print?Printf和Println?的區(qū)別解析

    這篇文章主要介紹了Go語(yǔ)言中?Print?Printf和Println?的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

集安市| 吉安市| 巫溪县| 土默特右旗| 东丰县| 鹤壁市| 沂源县| 克什克腾旗| 徐州市| 翁牛特旗| 沈丘县| 鸡西市| 平陆县| 楚雄市| 灵台县| 广水市| 家居| 洛阳市| 景东| 康乐县| 德化县| 维西| 烟台市| 丹寨县| 河北区| 虞城县| 奉节县| 吉木萨尔县| 灵川县| 青铜峡市| 日照市| 宜城市| 慈利县| 红河县| 台湾省| 且末县| 祁连县| 仁怀市| 丹棱县| 怀远县| 凉城县|