Golang標準庫
阿新 • • 發佈:2022-04-21
1. fmt.Printf
通用佔位符:
-
%v
以預設值列印 -
%+v
以預設值列印,輸出結構體會輸出欄位名 -
%#v
結果為:%T+%+v -
%T
輸出值型別 -
%%
列印%本身
列印字串 -
%s
輸出字串表示 -
%q
雙引號圍繞字串 -
%x
輸出十六進位制,小寫字母,每位元組兩個字元 -
%X
輸出十六進位制,大寫字母,每位元組兩個字元
列印指標%p
列印整數 -
%b
二進位制 -
%d
十進位制 -
%o
八進位制 -
%x
十六進位制小寫 -
%X
十六進位制大寫 -
%c
列印unicode -
%q
go語法字元字面值 -
%U
對應的unicode值
列印浮點數 -
%e
科學計數法e -
%E
-
%f
有小數部分,無指數 -
%F
=%f
-
%g
%e|%f
取更簡潔的輸出 -
%G
%E|%F
取更簡潔的輸出
精度輸出 -
%a.bf
a代表多變的寬度,b為精度,如果沒有點,則a是整體寬度
佔位符 -
%+v
佔位符,值為結構體時,輸出結構體欄位名 -
%+q
只輸出ascii編碼的字元,非ascii用unicode表示 -
%#x
給列印的16進位制加0x -
%#q
用反引號列印字串 -
%#U
若是可列印的字元,則將其列印 -
%#p
若是列印記憶體地址,則去掉0x
2. os/exec
exec.Command返回一個cmd物件,命令的執行分為三種情況:
- 只執行命令
cmd := exec.Command("ls", "-l", "/var/log/") err := cmd.Run()
- 執行命令並獲取結果(不區分stdout,stderr)
cmd:=exec.Command("ls")
out,err:=cmd.CombinedOutput()
//ls -l /var/log/*.log對應的shell命令
//ls -l "/var/log/*.log"
- 執行命令並獲取結果(區分stdout,stderr)
cmd := exec.Command("ls", "-l", "\"/var/log/*.log\"") var stdout, stderr bytes.Buffer cmd.Stdout = &stdout // 標準輸出 cmd.Stderr = &stderr // 標準錯誤
- 管道
將上一條命令的執行輸出結果,做為下一條命令的引數
c1 := exec.Command("grep", "ERROR", "/var/log/messages")
c2 := exec.Command("wc", "-l")
c2.Stdin, _ = c1.StdoutPipe()
c2.Stdout = os.Stdout
_ = c2.Start()
_ = c1.Run()
_ = c2.Wait()
- 設定環境變數
os.Setenv("NAME","szx")
cmd := exec.Command("echo", os.ExpandEnv("$NAME"))
3. flag庫
func init() {
flag.StringVar(&name, "name", "jack", "your name")
}
//從引數中查詢
m:= flag.Lookup("members")
4. 讀檔案
//整個檔案讀入記憶體
//os
content, err := os.ReadFile("a.txt")
//import "io/ioutil"
content, err := ioutil.ReadFile("a.txt")
//import os
file, err := os.Open("a.txt")//c建立控制代碼
content, err := ioutil.ReadAll(file)
//每次只讀取一行
bufio.ReadLine()
fi, err := os.Open("christmas_apple.py")//建立控制代碼
// 建立 Reader
r := bufio.NewReader(fi)
for{
lineBytes, err := r.ReadBytes('\n')
if err == io.EOF {
break
}
}
fi, err := os.Open("a.txt")//控制代碼
r := bufio.NewReader(fi)
for {
line, err := r.ReadString('\n')
if err == io.EOF {
break
}
}
//每次讀取固定位元組數
//os庫
fi, err := os.Open("a.txt")//控制代碼
r := bufio.NewReader(fi)//reader
// 每次讀取 1024 個位元組
buf := make([]byte, 1024)
for {
n, err := r.Read(buf)
if n == 0 {
break
}
}
//syscall庫讀取