Go 标准库

发布时间: 更新时间: 总字数:550 阅读时间:2m 作者: 分享 复制网址

介绍Golang尝使用的库函数。

介绍

  • bytes
  • bufio,可以对 os.File、io.Reader 等进行操作
  • crypto:加解密相关工具包,如 md5/sha1/sha256/sha512/hmac
  • encoding:编解码,如 base64/json
  • flag:命令行获取参数
  • path
  • log:日志模块
log.SetPrefix("gseo: ")
log.SetFlags(log.Flags | log.Llongfile) // 设置日志格式
log.Panicf("%s", "x") // panic 日志,之后退出
log.Fatalf("%s", "x") // fatal 日志,之后 os.Exit(1)

	Stdin  = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
	Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
	Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
  • net
    • net.Conn 也实现了 io.Reader 和 io.Writer
  • io
  • os
    • Open/OpenFile 对磁盘文件进行操作
  • runtime
    • runtime.Caller func Caller(skip int) (pc uintptr, file string, line int, ok bool) {} 获取当前 go 程调用栈所执行函数的文件和行号信息,缺点:函数开销大
      • 参数
      • skip=0 报告Caller()的调用者的信息
      • skip=1 报告Caller()的调用者的调用者的信息,依次类推
  • sort
  • strcov
  • strings,下面的两个工具对内存数据操作:
    • Builder
    • Reader
  • sync
  • testing
  • time:时间相关工具,time.Sleep(time.Second * 3)
    • golang.org/x/time/rate 限速器
  • utf8
  • binary: uint64 转换 byte 大端字节序列化/小端字节序列化
i := int64(-123456789)

fmt.Println(i)

b := make([]byte, 8)
binary.LittleEndian.PutUint64(b, uint64(i))

fmt.Println(b)

i = int64(binary.LittleEndian.Uint64(b))
fmt.Println(i)

uintptr

  • uintptrGo 的内置类型,返回 无符号整数,可用来存储内存地址,常用于 指针 运算

unsafe.Pointer

  • unsafe.Pointer 表示任意类型且可寻址的指针值,支持在不同指针类型之间进行转换,即任意可寻址的指针
    • 任何类型的指针 可以转换为 Pointer
    • Pointer 可以转换为 任何类型的指针
    • uintptr 可以转换为 Pointer
    • Pointer 可以转换为 uintptr
  • 其他方法
    • unsafe.Offsetof 返回成员变量在结构体中的偏移量
package main

import (
	"fmt"
	"unsafe"
)

func main() {
	num := 5
	intPointer := &num

	fPointer := (*float32)(unsafe.Pointer(intPointer))
	fmt.Println(fPointer)
}
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数