本文介绍: fmt json time strconv
1. fmt
fmt 包主要用于格式化输入输出操作。
-
打印输出:
import "fmt" fmt.Print("Hello, ") // 基本输出,不换行 fmt.Println("world!") // 输出并换行 fmt.Printf("Name: %s, Age: %d\n", "Alice", 25) // 格式化输出 -
格式化字符串:不直接输出,而是返回格式化后的字符串。
name := "Bob" age := 30 message := fmt.Sprintf("Name: %s, Age: %d", name, age) fmt.Println(message) -
扫描输入:
var name string fmt.Print("Enter your name: ") fmt.Scanln(&name) fmt.Println("Hello,", name)
2. json
encoding/json 包用于 JSON 数据的编码和解码。
-
结构体编码为 JSON:
import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` // `json:"name"` 为字段指定 JSON 标签 Age int `json:"age"` } func main() { p := Person{Name: "Alice", Age: 25} jsonData, _ := json.Marshal(p) // 序列化为 JSON 字节数据 fmt.Println(string(jsonData)) // 转为字符串输出 } -
解码 JSON 到结构体:
jsonData := `{"name": "Bob", "age": 30}` var p Person json.Unmarshal([]byte(jsonData), &p) // 将 JSON 字节数据反序列化为结构体 fmt.Println(p.Name, p.Age) -
解析到通用 map:
var data map[string]interface{} json.Unmarshal([]byte(jsonData), &data) fmt.Println(data["name"], data["age"])
3. time
time 包提供了时间和日期的处理功能。
-
获取当前时间:
import ( "fmt" "time" ) now := time.Now() fmt.Println("Current Time:", now) -
格式化时间:使用
Format方法,根据预定义的格式化模板进行格式化。formatted := now.Format("2006-01-02 15:04:05") // 固定模板格式 fmt.Println("Formatted Time:", formatted) -
解析时间:
layout := "2006-01-02 15:04:05" parsedTime, err := time.Parse(layout, "2024-11-10 10:00:00") if err == nil { fmt.Println("Parsed Time:", parsedTime) } -
时间操作:
future := now.Add(24 * time.Hour) // 加一天 duration := future.Sub(now) // 计算时间差 fmt.Println("Time Difference:", duration.Hours(), "hours")
4. strconv
strconv 包用于基本数据类型与字符串之间的转换。
-
字符串转整数:
import ( "fmt" "strconv" ) str := "123" num, err := strconv.Atoi(str) // Atoi 字符串转 int if err == nil { fmt.Println("Converted Number:", num) } -
整数转字符串:
num := 456 str := strconv.Itoa(num) // Itoa int 转字符串 fmt.Println("Converted String:", str) -
字符串转浮点数:
floatStr := "3.1415" f, err := strconv.ParseFloat(floatStr, 64) // 64 指定浮点数精度 if err == nil { fmt.Println("Converted Float:", f) } -
浮点数转字符串:
f := 2.718 str := strconv.FormatFloat(f, 'f', 2, 64) // 格式化浮点数为字符串,保留两位小数 fmt.Println("Formatted Float String:", str)本文是基础语法的最后一篇文章,学习过程中本人受益匪浅,不禁感慨Go语言的强大!