91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么應用Golang的標準庫fmt

發布時間:2020-06-01 23:27:47 來源:億速云 閱讀:351 作者:鴿子 欄目:編程語言

1.fmt

fmt包實現了類似C語言printf和scanf的格式化I/O。主要分為向外輸出內容和獲取輸入內容兩大部分。

1.1向外輸出

1.1.1Print

Print系列函數會將內容輸出到系統的標準輸出,區別在于
Print函數直接輸出內容,
Printf函數支持格式化輸出字符串,
Println函數會在輸出內容的結尾添加一個換行符。

func Print(a ...interface{}) (n int, err error)
func Printf(format string, a ...interface{}) (n int, err error)
func Println(a ...interface{}) (n int, err error)
package main

import "fmt"

func main()  {
    fmt.Print("Print輸出信息!")
    name := "vita"
    fmt.Printf("Printf輸出name:%s\n",name)
    fmt.Println("Println輸出信息")
}

結果:
Print輸出信息!Printf輸出name:vita
Println輸出信息

Process finished with exit code 0

1.1.2Fprint

Fprint系列函數會將內容輸出到一個io.Writer接口類型的變量w中,我們通常用這個函數往文件中寫入內容。
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)
package main

import (
    "fmt"
    "os"
)

func main()  {
    //寫入到標準輸出
    fmt.Fprint(os.Stdout,"Fprint向標準輸出寫入內容")
    fmt.Fprintln(os.Stdout,"Fprintln向標準輸出寫入內容")
    name := "vita"
    fmt.Fprintf(os.Stdout,"Fprintf向標準輸出寫入內容name:%s",name)

    fileObj,err := os.OpenFile("./file",os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil{
        fmt.Println("打開文件出錯,err:",err)
    }
    //寫入到文件中
    fmt.Fprint(fileObj,"Fprint向文件中寫入內容")
    fmt.Fprintln(fileObj,"Fprintln向文件中寫入內容")
    fmt.Fprintf(fileObj,"Fprintf向文件中寫入內容,name:%s",name)
}

結果:
Fprint向標準輸出寫入內容Fprintln向標準輸出寫入內容
Fprintf向標準輸出寫入內容name:vita
Process finished with exit code 0

怎么應用Golang的標準庫fmt

1.1.3Sprint

Sprint系列函數會把傳入的數據生成并返回一個字符串。
func Sprint(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string
func Sprintln(a ...interface{}) string
package main

import "fmt"

func main()  {
    s1 := fmt.Sprint("Sprint")
    fmt.Println(s1)
    s2 := fmt.Sprintln("Sprintln")
    fmt.Println(s2)
    s3 := fmt.Sprintf("Sprintf,s1:%s",s1)
    fmt.Println(s3)
}

結果:
Sprint
Sprintln

Sprintf,s1:Sprint

Process finished with exit code 0

1.1.4Errorf

Errorf函數根據format參數生成格式化字符串并返回一個包含改字符串的錯誤。
func Errorf(format string, a ...interface{}) error
通常使用該方法定義錯誤類型。
package main

import "fmt"

func main()  {
    name := "vita"
    err := fmt.Errorf("%s創建了一個錯誤",name)
    fmt.Printf("value:%v type:%T",err,err)
}

結果:
value:vita創建了一個錯誤 type:*errors.errorString
Process finished with exit code 0

1.1.5格式化占位符

*printf系列函數都支持format格式化參數,在這個我們按照占位符將被替換的變量類型劃分,方便查詢和記憶。
1.1.5.1通用占位符

怎么應用Golang的標準庫fmt

package main

import "fmt"

func main()  {
    fmt.Printf("v:%v\n", 100)
    fmt.Printf("v:%v\n", false)
    o := struct{ name string }{"小王子"}
    fmt.Printf("v:%v\n", o)
    fmt.Printf("+v:%+v\n", o)
    fmt.Printf("#v:%#v\n", o)
    fmt.Printf("T:%T\n", o)
    fmt.Printf("100%%\n")
}

結果:
v:100
v:false
v:{小王子}
+v:{name:小王子}
#v:struct { name string }{name:"小王子"}
T:struct { name string }
100%

Process finished with exit code 0
1.1.5.2布爾型

怎么應用Golang的標準庫fmt

package main

import "fmt"

func main()  {
    fmt.Printf("t:%t\n", false)
    fmt.Printf("v:%v\n", false)

}

結果:
t:false
v:false

Process finished with exit code 0
1.1.5.3整型

怎么應用Golang的標準庫fmt

package main

import "fmt"

func main()  {
    n := 65
    fmt.Printf("%b\n", n)
    fmt.Printf("%c\n", n)
    fmt.Printf("%d\n", n)
    fmt.Printf("%o\n", n)
    fmt.Printf("%x\n", n)
    fmt.Printf("%X\n", n)
}

結果:
1000001
A
65
101
41
41

Process finished with exit code 0
1.1.5.4浮點數與復數

怎么應用Golang的標準庫fmt

package main

import "fmt"

func main()  {
    f := 12.34
    fmt.Printf("b:%b\n", f)
    fmt.Printf("e:%e\n", f)
    fmt.Printf("E:%E\n", f)
    fmt.Printf("f:%f\n", f)
    fmt.Printf("F:%F\n", f)
    fmt.Printf("g:%g\n", f)
    fmt.Printf("G:%G\n", f)
}

結果:
b:6946802425218990p-49
e:1.234000e+01
E:1.234000E+01
f:12.340000
F:12.340000
g:12.34
G:12.34

Process finished with exit code 0
1.1.5.5字符串和[]byte

怎么應用Golang的標準庫fmt

package main

import "fmt"

func main()  {
    s := "小王子"
    fmt.Printf("%s\n", s)
    fmt.Printf("%q\n", s)
    fmt.Printf("%x\n", s)
    fmt.Printf("%X\n", s)
}

結果:
小王子
"小王子"
e5b08fe78e8be5ad90
E5B08FE78E8BE5AD90

Process finished with exit code 0
1.1.5.6指針

怎么應用Golang的標準庫fmt

package main

import "fmt"

func main()  {
    a := 10
    fmt.Printf("%p\n", &a)
    fmt.Printf("%#p\n", &a)
}

結果:
0xc00007e000
c00007e000

Process finished with exit code 0
1.1.5.7寬度標識符
寬度通過一個緊跟在百分號后面的十進制數指定,如果未指定寬度,則表示值時除必需之外不作填充。精度通過(可選的)寬度后跟點號后跟的十進制數指定。如果未指定精度,會使用默認精度;如果點號后沒有跟數字,表示精度為0。舉例如下

怎么應用Golang的標準庫fmt

package main

import "fmt"

func main()  {
    n := 12.34
    fmt.Printf("%f\n", n)
    fmt.Printf("%9f\n", n)
    fmt.Printf("%.2f\n", n)
    fmt.Printf("%9.2f\n", n)
    fmt.Printf("%9.f\n", n)
}

結果:
12.340000
12.340000
12.34
    12.34
       12

Process finished with exit code 0
1.1.5.8其他flag

怎么應用Golang的標準庫fmt

package main

import "fmt"

func main()  {
    s := "小王子"
    fmt.Printf("%s\n", s)
    fmt.Printf("%5s\n", s)
    fmt.Printf("%-5s\n", s)
    fmt.Printf("%5.7s\n", s)
    fmt.Printf("%-5.7s\n", s)
    fmt.Printf("%5.2s\n", s)
    fmt.Printf("%05s\n", s)
}

結果:
小王子
  小王子
小王子  
  小王子
小王子  
   小王
00小王子

Process finished with exit code 0

1.2獲取輸入

1.2.1fmt.Scan

func Scan(a ...interface{}) (n int, err error)
Scan從標準輸入掃描文本,讀取由"空白符"分隔的值保存到傳遞給本函數的參數中,換行符視為空白符。
本函數返回成功掃描的數據個數和遇到的任何錯誤。如果讀取的數據個數比提供的參數少,會返回一個錯誤報告原因。
package main

import "fmt"

func main()  {
    var (
        name string
        age int
        married bool
    )
    fmt.Scan(&name,&age,&married)
    fmt.Printf("掃描結果 name:%s age:%d married:%t \n", name, age, married)
}

在終端輸入name,age,married對應的值
lili 23 true
掃描結果 name:lili age:23 married:true 

Process finished with exit code 0

1.2.2fmt.Scanf

func Scanf(format string, a ...interface{}) (n int, err error)
Scanf 從標準輸入掃描文本,根據format參數指定的格式去讀取由空白符分隔的值保存到本函數的參數中。
本函數返回成功掃描的數據個數和遇到的任何錯誤。
注意:
Scanf不同于Scan,Scanf為輸入數據制定了具體的輸入內容格式,只有按照格式輸入數據,才會掃描成功并存入變量中。
package main

import "fmt"

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
    fmt.Printf("掃描結果 name:%s age:%d married:%t \n", name, age, married)
}

結果:
1:lili 2:27 3:true
掃描結果 name: age:0 married:false 

Process finished with exit code 0

1.2.3fmt.Scanln

func Scanln(a ...interface{}) (n int, err error)
Scanln類似Scan,它在遇到換行時才停止掃描。最后一個數據后面必須有換行或者到達結束位置。
本函數返回成功掃描的數據個數和遇到的任何錯誤。
package main

import "fmt"

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scanln( &name, &age, &married)
    fmt.Printf("掃描結果 name:%s age:%d married:%t \n", name, age, married)
}

結果:
lili 27 true
掃描結果 name:lili age:27 married:true 

Process finished with exit code 0

1.2.4bufio.NewReader

有時候,我們想完整獲取輸入的內容,而輸入的內容可能包含空格,這種情況下可以使用bufio包來實現。
package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin) //從標準輸入生成讀對象
    fmt.Print("請輸入內容:")
    text,_ := reader.ReadString('\n') //讀到換行
    text = strings.TrimSpace(text)
    fmt.Printf("%#v\n",text)
}

結果:
請輸入內容:ww qq aa
"ww qq aa"

Process finished with exit code 0

1.2.5Fscan系列

這幾個函數功能分別類似于fmt.Scan、fmt.Scanf、fmt.Scanln三個函數,只不過它們不是從標準輸入中讀取數據而是從io.Reader中讀取數據。

func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
package main

import (
    "fmt"
    "os"
)

func main() {
    var (
        name string
        age int
    )
    fileObj, err := os.OpenFile("./xx.txt", os.O_CREATE|os.O_RDONLY|os.O_APPEND, 0644)
    if err != nil {
        fmt.Println("打開文件出錯,err:", err)
        return
    }
    fmt.Fscan(fileObj,&name,&age)
    fmt.Println(name,age)
}

結果:
lili 27

Process finished with exit code 0

怎么應用Golang的標準庫fmt

1.2.6Sscan系列

這幾個函數功能分別類似于fmt.Scan、fmt.Scanf、fmt.Scanln三個函數,只不過它們不是從標準輸入中讀取數據而是從指定字符串中讀取數據。

func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
package main

import "fmt"

func main() {
    var (
        name string
        age int
    )
    fmt.Sscan("lili 27",&name,&age)
    fmt.Println(name,age)
}

結果:
lili 27

Process finished with exit code 0

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌图县| 漠河县| 屯门区| 手机| 微山县| 新兴县| 浏阳市| 上高县| 恭城| 新化县| 闻喜县| 高雄市| 当阳市| 阿勒泰市| 平乐县| 惠水县| 临西县| 塔河县| 桃江县| 泾阳县| 石家庄市| 江西省| 原阳县| 社旗县| 蓬莱市| 宁乡县| 余江县| 吉林省| 靖安县| 塘沽区| 扶绥县| 英德市| 莲花县| 邢台市| 布尔津县| 治多县| 竹山县| 瑞昌市| 水城县| 东乡县| 秦安县|