格式化输出
格式化在逻辑中非常常用。使用格式化函数,要注意写法:
fmt.Sprintf(格式化样式, 参数列表…)
- 格式化样式:字符串形式,格式化动词以%开头。
- 参数列表:多个参数以逗号分隔,个数必须与格式化样式中的个数一一对应,否则运行时会报错。
package main
import "fmt"
func main(){
var progress = 2
var target = 8
// 两参数格式化
title := fmt.Sprintf("已采集%d个药草, 还需要%d个完成任务", progress, target)
fmt.Println(title)
pi := 3.14159
// 按数值本身的格式输出
variant := fmt.Sprintf("%v %v %v", "月球基地", pi, true)
fmt.Println(variant)
}
// 匿名结构体声明, 并赋予初值
profile := &struct {
Name string
HP int
}{
Name: "rat",
HP:56,
}
fmt.Printf("使用'[%%v - 按值的本来值输出]' %v\n", profile)
fmt.Printf("使用'[%%+v - 在%%v基础上,对结构体字段名和值进行展开]' %+v\n", profile)
fmt.Printf("使用'[%%#v - 输出 Go 语言语法格式的值]' %#v\n", profile)
fmt.Printf("使用'%%T' %T\n", profile)
输入变量
package main
import "fmt"
func main(){
var age int
fmt.Println("请输入年龄:")
fmt.Scanf("%d", &age)
fmt.Println("a = ", age)
fmt.Println("请输入年龄:")
fmt.Scan(&age)
fmt.Println("a = ", age)
}
fmt包的格式化输出输入
变量类型
byte
(1)所谓字符类型是用单引号括起来的单个字符,关于字符的定义使用如下:
package main
import "fmt"
func main(){
var ch byte
ch = 'a'
fmt.Printf("%c, %d\n", ch, ch)
ch = 97
fmt.Printf("%c, %d\n", ch, ch)//计算机不能直接存储字符类型,只能转成数字(’ASCII’码)存储, a的ASCII码是97
}
(2)输入一个字符
package main
import "fmt"
func main(){
var ch byte
fmt.Scanf("%c", &ch)
fmt.Printf("%c, %d\n", ch, ch)
}
(3)计算机中除了普通字符之外,还有一种特殊字符—转义字符
- ":表示一个英文半角的双引号
- \t:表示一个tab键的空格(可以用来对输出的内容进行排版)
- \:表示一个(主要用在表示磁盘目录上
package main
import "fmt"
func main(){
fmt.Printf("注意\"基础知识\"要打牢\n")
fmt.Printf("C++\tRust\tGo\n")
fmt.Printf("D:\\software")
}
字符串类型
用单引号括起来的单个字符是字符类型,用双引号括起来的字符是字符串类型
package main
import "fmt"
func main(){
var str1 string
str1 = "abc"
fmt.Printf("%s\n请输入字符串:", str1)
fmt.Scanf("%s", &str1)
fmt.Printf("%s", str1)
}
数据类型转换
- 字符串转换为64位浮点数
strconv.ParseFloat(string(v["total"]), 64)
- 保留两位小数
fmt.Sprintf("%.2f", handlered[street_name] / total * 100)