日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Go語言標準輸入輸出庫的基本使用教程_Golang

作者:良猿 ? 更新時間: 2022-04-19 編程語言

fmt

fmt是go語言中的格式化輸入輸出庫,其中主要分為兩個部分,分別是輸出部分和輸入部分。

輸出

Print

Print函數(shù)的主要功能是輸出,和Print類似的函數(shù)有以下幾個:

  • func Print(a ...interface{}) (n int, err error):直接輸出
  • func Println(a ...interface{}) (n int, err error):和Print使用方法一樣,但是不同與Print的是Println在每次打印完成之后會自動換行,如果使用Print想要換行需要在結尾加上\n
  • func Printf(format string, a ...interface{}) (n int, err error):支持格式化輸出字符串,在使用Printf時,可以在函數(shù)中使用格式化字符串占位。

代碼示例:

func main() {
	a := "Lee"
	fmt.Print("大家好,")
	fmt.Printf("我是:%s \n",a)
	fmt.Println("我在學習Go語言")
}

運行結果:

常用占位符:

  • %d:整形十進制占位符
  • %b:整形二進制占位符
  • %o:整形八進制占位符
  • %x:整形十六進制占位符,其中a到f為小寫
  • %X:整形十六進制占位符,其中A到F為大寫
  • %s:字符串占位符
  • %f:浮點數(shù)占位符
  • %e:浮點數(shù)科學計數(shù)法:例如:1.234e+10
  • %E:浮點數(shù)科學計數(shù)法:例如:1.234E+10
  • %t:布爾類型占位符
  • %p:指針,十六進制表示,并加上0x前綴

Fprint

Fprint系列函數(shù)同樣有以下三個,該函數(shù)會將內容輸出到io.Writer接口類型的變量w中,通常用于朝文件中寫入數(shù)據(jù)。

  • func Fprint(w io.Writer, a ...interface{}) (n int, err error)
  • func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
  • func Fprintln(w io.Writer, a ...interface{}) (n int, err error)

代碼示例:

func main() {
	file, err := os.OpenFile("D://test/a.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		fmt.Println("打開文件出錯:", err)
		return
	}
	name := "lee"
	age := 23
	// 向文件中寫入數(shù)據(jù)
	fmt.Fprintf(file, "姓名:%s,年齡:%d \n", name, age)
	// 向控制臺寫入數(shù)據(jù)
	fmt.Fprintf(os.Stdout, "寫入成功")
}

運行結果:

以上代碼成功將內容寫入到了a.txt文件中。

Sprint

Sprint會將傳入的內容格式化成一個字符串并返回,和Sprint類似的函數(shù)有以下幾個:

  • func Sprint(a ...interface{}) string:直接返回
  • func Sprintf(format string, a ...interface{}) string:格式化返回
  • func Sprintln(a ...interface{}) string:自動換行放回

代碼示例:

func main() {
	a := "Lee"
	s1 := fmt.Sprint("直接返回")
	s2 := fmt.Sprintln("自動換行返回")
	s3 := fmt.Sprintf("格式化返回:%s", a)
	fmt.Print(s1)
	fmt.Print(s2)
	fmt.Print(s3)
}

運行結果:

Errorf

Errorf是根據(jù)傳入的內容格式化后返回一個包含該字符串的error。

func Errorf(format string, a ...interface{}) error 

代碼示例:

func main() {
	a := "error"
	error := fmt.Errorf("錯誤:%s", a)
	fmt.Print(error)
}

運行結果:

輸入

在go語言中獲取控制臺輸入可以使用以下幾個函數(shù):

func Scan(a ...interface{}) (n int, err error)
func Scanf(format string, a ...interface{}) (n int, err error)
func Scanln(a ...interface{}) (n int, err error) 

Scan

Scan從標準輸入讀取文本,以空格符或換行符為分隔,將讀取到的內容賦值給函數(shù)的參數(shù),函數(shù)返回成功讀取到的數(shù)據(jù)個數(shù)和遇到的錯誤。

代碼示例:

func main() {
	var name string
	var age int
	fmt.Print("請輸入姓名和年齡:")
	fmt.Scan(&name, &age)
	fmt.Printf("姓名:%s,年齡:%d \n", name, age)
}

運行結果:

Scanf

Scanf根據(jù)format參數(shù)指定的格式去讀取由空白符分隔的值保存到函數(shù)的參數(shù)中。

代碼示例:

func main() {
	var name string
	var age int
	fmt.Print("請輸入姓名和年齡:")
	fmt.Scanf("name=%s age=%d", &name, &age)
	fmt.Printf("姓名:%s,年齡:%d \n", name, age)
}

運行結果:

使用Scanf進行輸入時,需要完整的在控制臺輸入函數(shù)中指定的格式,例如上述代碼中指定的格式為name=%s age=%d,則在輸入時就必須使用該格式,如果還是和之前的Scan中一樣只輸入lee 23是讀取不到內容的。

Scanln

Scanln類似于Scan,但是不同的是使用Scanln時只要輸入了換行之后就會停止讀取。

代碼示例:

func main() {
	var name string
	var age int
	fmt.Print("請輸入姓名和年齡:")
	fmt.Scanln(&name, &age)
	fmt.Printf("姓名:%s,年齡:%d \n", name, age)
}

運行結果:

例如上述的輸入中,如果僅僅只是輸入了姓名就換行,那么就會停止讀取,但是在Scan中,如果輸入姓名后換行不會停止讀取還需要繼續(xù)輸入年齡后才會停止讀取。

總結

原文鏈接:https://juejin.cn/post/7063781069824196644

欄目分類
最近更新