fmt - skynocover/Wiki-for-GoLang GitHub Wiki
fmt
可參考go fmt
輸入
Scan
func ffmt(){
var i int
var d float32
var s string
fmt.Scan(&i, &d, &s)
fmt.Println(i,d,s)
}
input 2131,1321,3213
output 2131,0
1321,3213
- 以空格跟換行作為輸入
Scanf
var i int
var d float32
var s string
fmt.Scanf("%d %f \n%s", &i, &d, &s)
fmt.Println(i, d, s)
input 123 212 321
output 123 212 321
- 可以自定義輸入的格式,比方說\n
var i int
var d float32
var s string
fmt.Scanf("%3d%3f%s", &i, &d, &s)
fmt.Println(i, d, s)
input 12321321321
output 123 213 21321
- 也可以自定義輸入的長度
Scanln
var i int
var d float32
var s string
fmt.Scanln(&i, &d, &s)
fmt.Println(i, d, s)
input 12313 132132 3213
output 12313 132132 3213
- 以換行做為一次輸入的結束
輸出
- print 字串會字型黏在一起
- println 自動加上換行,字串會自動加上空格
- printf 有佔位符號可用
- Sprintf 沒辦法印出東西,需要另外使用fmt.Print
fmt.Print("a", "b", 1, 2, 3, "c", "d", "\n")
fmt.Println("a", "b", 1, 2, 3, "c", "d")
fmt.Printf("ab %d %d %d cd\n", 1, 2, 3)
fmt.Sprintf("%s", testStr) //印不出東西
// ab1 2 3cd
// a b 1 2 3 c d
// ab 1 2 3 cd
printStr := fmt.Sprintf("%s", testStr) //用這種方式來格式化符號
fmt.Println(printStr) //test str
佔位符
- %d
會顯示格式化後的文字
var pi = 3.1416
var three = 3
out := fmt.Sprintf("PI is %d,3 is %d", pi ,three)
fmt.Println(out)
// PI is 3,3 is %!d(float64=3.1416)
- %v
會顯示原本的格式
out2 := fmt.Sprintf("PI is %v,three is %v,True is %v", pi,three, true)
fmt.Println(out2)
//PI is 3.1416,three is 3,True is true
- 使用struct
profile := &struct {
Name string
HP int
}{
Name: "rat",
HP: 150,
}
fmt.Printf("使用'%%+v' %+v\n", profile)
fmt.Printf("使用'%%#v' %#v\n", profile)
fmt.Printf("使用'%%T' %T\n", profile)
//使用'%+v' &{Name:rat HP:150}
//使用'%#v' &struct { Name string; HP int }{Name:"rat", HP:150}
//使用'%T' *struct { Name string; HP int }
佔位符 | 功能 |
---|---|
%v | 按值輸出 |
%+v | 對struct展開 |
%b | 二進位顯示 |
%o | 八進制 |
%d | 十進制 |
%x | 十六進制(小寫) |
%X | 十六進制(大寫) |
%U | Unicode |
%f | float |
顏色輸出
前景 | 背景 | 顏色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
顯示方式
0 默認設定
1 高亮
4 使用下畫線
5 閃爍
7 反白
8 不可見
// 0 默認設置
// 1 高亮
// 4 使用下畫線
// 5 閃爍
// 7 反白顯示
// 8 不可見
for b := 40; b <= 47; b++ { // 背景色彩 = 40-47
for f := 30; f <= 37; f++ { // 前景色彩 = 30-37
for d := range []int{0, 1, 4, 5, 7, 8} { // 显示方式 = 0,1,4,5,7,8
fmt.Printf(" %c[%d;%d;%dm%s(f=%d,b=%d,d=%d)%c[0m ", 0x1B, d, b, f, "", f, b, d, 0x1B)
}
fmt.Println("")
}
fmt.Println("")
}
fmt.Printf("%c[1;40;32m%s%c[0m\n", 0x1B, "testPrintColor", 0x1B)
指標
顯示位址
fmt.Println(&a)
若傳值為變數
func Compute(a int) {
a = 0
}
func main() {
x := 5
Compute(x)
fmt.Println(x)
}
5
若傳值為位址
func Compute(a *int) {
*a = 0
}
func main() {
x := 5
Compute(&x)
fmt.Println(x)
}
0x414020