Go 语言基础语法Part3 | 豆包MarsCode AI刷题

49 阅读2分钟

本文介绍: 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语言的强大!