Go语言常用标准库

目录fmttimeflaglogioencoding/jsonstrconvmathtemplatenet/httpcryptosynccontextbytes数据格式反射osmodulestringpath/filepathcompress/gzipd

目录


fmt (Format)

fmt 包提供了格式化输入/输出函数,如打印到标准输出、读取用户输入等。

主要函数

  • Print: 打印多个值,不换行。
  • Println: 打印多个值并换行。
  • Printf: 格式化打印多个值。
  • Scan: 从标准输入读取一个或多个值。
  • Scanf: 按指定格式从标准输入读取一个或多个值。
  • Sprint: 将多个值转换为字符串。
  • Sprintf: 按指定格式将多个值转换为字符串。

示例代码

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello, World!")
    var name string
    fmt.Print("请输入您的名字: ")
    fmt.Scan(&name)
    fmt.Printf("欢迎 %s 来到 Go 世界。\n", name)
}

time

time 包用于处理日期和时间。

主要函数

  • Now: 获取当前时间。
  • Parse: 解析指定格式的时间字符串。
  • Format: 将时间对象格式化为字符串。
  • Since: 计算两个时间点之间的时间差。
  • Sleep: 暂停执行一段时间。

示例代码

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println("当前时间:", now.Format("2006-01-02 15:04:05"))
    t, _ := time.Parse("2006-01-02", "2023-09-01")
    fmt.Println("解析后的时间:", t)
}

flag

flag 包用于解析命令行参数。

主要函数

  • String: 创建一个字符串类型的命令行参数。
  • Int: 创建一个整数类型的命令行参数。
  • Bool: 创建一个布尔类型的命令行参数。
  • Parse: 解析命令行参数。

示例代码

package main

import (
    "flag"
    "fmt"
)

func main() {
    var name = flag.String("name", "World", "A name to greet.")
    flag.Parse()
    fmt.Printf("Hello, %s!\n", *name)
}

log

log 包提供基本的日志记录功能。

主要函数

  • Print: 打印日志信息。
  • Printf: 格式化打印日志信息。
  • Println: 打印日志信息并换行。
  • Fatal: 打印日志信息并退出程序。
  • Panic: 打印日志信息并触发 panic。

示例代码

package main

import (
    "log"
)

func main() {
    log.SetPrefix("[INFO] ")
    log.SetFlags(0)
    log.Println("程序开始运行")
}

io

io 包定义了一些接口,用于处理输入输出流。

主要函数

  • Copy: 复制数据流。
  • ReadAll: 读取所有数据。
  • WriteString: 写入字符串。

示例代码

package main

import (
    "io"
    "os"
)

func main() {
    _, err := io.Copy(os.Stdout, os.Stdin)
    if err != nil {
        panic(err)
    }
}

encoding/json

encoding/json 包实现了JSON数据格式的编码和解码。

主要函数

  • Marshal: 将结构体转换为 JSON 字符串。
  • Unmarshal: 将 JSON 字符串转换为结构体。
  • Encode: 将结构体编码为 JSON 并写入 Writer。
  • Decode: 从 Reader 中解码 JSON 数据并填充到结构体。

示例代码

package main

import (
    "encoding/json"
    "fmt"
)

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    user := User{Name: "Alice", Age: 30}
    data, _ := json.Marshal(user)
    fmt.Println(string(data))
}

strconv

strconv 包提供了字符串和基本类型之间的转换。

主要函数

  • Atoi: 将字符串转换为整数。
  • Itoa: 将整数转换为字符串。
  • ParseFloat: 将字符串转换为浮点数。
  • FormatFloat: 将浮点数转换为字符串。

示例代码

package main

import (
    "fmt"
    "strconv"
)

func main() {
    ageStr := "25"
    age, _ := strconv.Atoi(ageStr)
    fmt.Println("年龄:", age)
}

math

math 包提供了数学运算功能。

主要函数

  • Abs: 计算绝对值。
  • Sqrt: 计算平方根。
  • Pow: 计算幂。
  • Ceil: 向上取整。
  • Floor: 向下取整。
  • Round: 四舍五入。

示例代码

package main

import (
    "fmt"
    "math"
)

func main() {
    fmt.Println("圆周率:", math.Pi)
    fmt.Println("平方根:", math.Sqrt(16))
}

template

template 包用于模板处理,常用于Web应用中的页面渲染。

主要函数

  • New: 创建一个新的模板。
  • ParseFiles: 解析多个文件。
  • Execute: 执行模板并写入Writer。
  • ExecuteTemplate: 执行指定名称的模板。

示例代码

package main

import (
    "html/template"
    "os"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    tmpl := template.Must(template.New("test").Parse(`<h1>Hello, {{.Name}}!</h1> Age: {{.Age}}`))
    p := Person{Name: "Alice", Age: 30}
    err := tmpl.Execute(os.Stdout, p)
    if err != nil {
        panic(err)
    }
}

net/http

net/http 包提供了HTTP客户端和服务端的功能。

主要函数

  • ListenAndServe: 监听并服务HTTP请求。
  • ServeMux: 默认的请求多路复用器。
  • HandleFunc: 注册处理函数。
  • Request: 创建HTTP请求。
  • Do: 发送HTTP请求。
  • ResponseWriter: 响应写入器。

示例代码

package main

import (
    "fmt"
    "net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, World!")
}

func main() {
    http.HandleFunc("/", helloHandler)
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        panic(err)
    }
}

crypto

crypto...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论