Go语言常用的标准库

2023-11-17


打印日志

在这里插入图片描述

package main

import (
	"log"
	"os"
)

func logger() {
	log.Printf("%d\n", 5)//打印到控制台
	fout, err := os.OpenFile("my.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm)//打开一个文件
	if err != nil {
		return
	}
	defer fout.Close()
	//输出一条日志信息到文件中
	logWriter := log.New(fout, "手动添加额外的信息", log.Ldate|log.Lmicroseconds)
	logWriter.Printf("%s\n", "这是一条测试信息")
}
func main() {
	logger()
}

在这里插入图片描述

系统调用命令

在这里插入图片描述

json的序列化和反序列化

在这里插入图片描述

type Student struct {
	Name string
	Age  int
}

func main() {
	stu := Student{"hjl", 18}
	bs, _ := json.Marshal(stu)
	fmt.Println(string(bs))
	bs, _ = sonic.Marshal(stu)
	fmt.Println(string(bs))
	var stu1 Student
	err := sonic.Unmarshal(bs, &stu1)
	if err != nil {
		fmt.Printf("错误\n")
		return
	}
	fmt.Println(stu1.Name)
}

在这里插入图片描述

base64

在这里插入图片描述


压缩和解压

在这里插入图片描述

func compressDemo() error {
	fin, err := os.Open("my.log")
	if err != nil {
		return err
	}
	defer fin.Close()
	stat, _ := fin.Stat()
	fmt.Printf("压缩前文件大小%d B\n", stat.Size())
	//创建一个压缩文件
	fout, err := os.OpenFile("my.zlib", os.O_CREATE|os.O_WRONLY, 0777)
	if err != nil {
		return err
	}
	defer fout.Close()
	bs := make([]byte, 1024)
	writer := zlib.NewWriter(fout)
	//将文件中的内容写到压缩文件中
	for {
		n, err := fin.Read(bs)
		if err == nil {
			writer.Write(bs[:n])
		} else {
			if err == io.EOF {
				break
			} else {
				fmt.Println(err)
				break
			}
		}
	}
	writer.Close()
	fin1, err := os.Open("my.zlib")
	if err != nil {
		return err
	}
	defer fin1.Close()
	stat1, _ := fin.Stat()
	fmt.Printf("压缩后文件大小%d B\n", stat1.Size())
	reader, err := zlib.NewReader(fin1)
	if err != nil {
		return err
	}
	io.Copy(os.Stdout, reader)
	reader.Close()

	return nil
}
func main() {
	compressDemo()
}

在这里插入图片描述


标准输入

在这里插入图片描述

文件操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

目录操作

在这里插入图片描述

在这里插入图片描述

func walk(path string) error {
	if subFiles, err := ioutil.ReadDir(path); err != nil {
		return err
	} else {
		for _, file := range subFiles {
			fmt.Println(file.Name())
			if file.IsDir() {
				if err := walk(filepath.Join(path, file.Name())); err != nil {
					return err
				}
			}
		}
	}
	return nil
}
func main() {
	walk(".")
}

在这里插入图片描述

init函数

只要引入了其他的包,就会在调用main函数之前自动调用这些包中的init函数。
所以init函数可以用来初始化这些包中的一些变量。
在这里插入图片描述

如果有多个包,其调用顺序如下:
在这里插入图片描述

在这里插入图片描述

包的可见性

在这里插入图片描述

在这里插入图片描述


数学库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

生成随机数

在这里插入图片描述
在这里插入图片描述

如果想要生成真随机数,除了可以传入系统时间作为随机数种子以外:
rand.Seed(time.Now().Unix())
还可以使用 crypto/rand 包中的方法,这样生成的每次都是不同的随机数:

func main() {
	// 生成 10 个 [0, 128) 范围的真随机数。
	for i := 0; i < 10; i++ {
		result, _ := rand.Int(rand.Reader, big.NewInt(128))
		fmt.Println(result)
	}
}

在这里插入图片描述


时间函数

在这里插入图片描述

在这里插入图片描述

func main() {
	layout := "2006x01x02 15a04a05"
	now := time.Now()            //拿到当前的时间
	nowStr := now.Format(layout) //将当前的时间按照layout的格式转成字符串
	fmt.Println(nowStr)
	fmt.Println(now)
	fmt.Println(now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
	<-time.After(3 * time.Second) //sleep三秒

	//将字符串再转回时间类
	loc, _ := time.LoadLocation("Asia/Shanghai")
	fmt.Println(loc)
	if t, err := time.ParseInLocation(layout, nowStr, loc); err == nil {
		fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second())
	} else {
		fmt.Println(err)
	}
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go语言常用的标准库 的相关文章

  • Golang GAE - 小胡子结构中的 intID

    这是一个Example https www dropbox com sh ur2ws1jnik6euef PjVJSwDTUc Blog Golang zip该应用程序的 关键代码在 golang code handler handler
  • 如何将 Unicode 字符转换为简单形式? [复制]

    这个问题在这里已经有答案了 有没有一个Go库可以Sj str m作为输入和返回Sjostrom作为输出 您可以使用golang org x text unicode norm来处理这个问题 package main import fmt i
  • 复杂数据类型作为 Go 中映射的键

    我正在尝试在 Go 中创建一个由大整数作为键的映射 effective Go 明确指出 结构体 数组和切片不能用作映射键 因为这些类型上没有定义相等性 这是有道理的 我当然可以将大整数转换为字符串并使用字符串作为键 但我在这里寻找更通用的解
  • 如何使信号量超时

    Go 中的信号量是通过通道来实现的 一个例子是这样的 https sites google com site gopatterns concurrency semaphores https sites google com site gop
  • “go.tools”的权限被拒绝错误

    当我尝试安装 go 工具时 我的权限被拒绝 usr local go pkg tool linux amd64 cover 我可以接受 因为它是 usr local 目录及需求root使用权 但我的第一个疑问是为什么当我设置时它试图安装在这
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 在 Visual Studio Code 中调试 Go 测试

    在我的 Windows 计算机上 我安装了 Visual Studio Code 要手动运行测试 我进入控制台到项目文件夹并输入 go test main test go 它工作完美 但我遇到一种情况 我需要调试我的测试以了解发生了什么 为
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 如何确定 go 中当前运行的可执行文件的完整路径?

    我一直在 osx 上使用这个函数 Shortcut to get the path to the current executable func ExecPath string var here os Args 0 if strings H
  • 错误:标准包中非标准导入“gopkg.in/yaml.v2”

    我正在尝试从以下位置导入 go yamlhttps github com go yaml yaml https github com go yaml yaml 并且我发现了一个 Google 没有提供帮助的错误 I ran go get g
  • golang.org 包和标准库之间的区别

    我使用 go 已经有一段时间了 我注意到 Go 标准库 和 golang org x 之间存在重复的包 我的问题是 为什么它们被释放两次 在这两者中 我应该使用哪一个 更新的 规范的等 到目前为止我注意到的一些示例包已发布两次 golang
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui
  • 将产生 goroutine 的 golang 方法

    据我所知 如果 goroutine 太忙 它们会阻止其他 goroutine 运行 对我来说 这意味着我的应用程序的性能和响应能力可能取决于我知道哪些库方法将控制其他 goroutine 例如通常是 Read 和 Write 有什么方法可以
  • 有没有办法间歇性地执行重复性任务?

    有没有办法在 Go 中执行重复的后台任务 我在想类似的事情Timer schedule task delay period 在爪哇 我知道我可以用 goroutine 来做到这一点Time sleep 但我想要一些容易停止的东西 这是我得到
  • Go 编译器有窗口化设置选项吗?

    我正在使用 Go 6g 编译 GTK 应用程序 我想知道是否有编译器 链接器选项使其成为 Windows 可执行文件而不是控制台可执行文件 MinGW 有一个 mwindows 选项来实现此目的 目前我必须使用十六进制编辑器手动更改 PE
  • 有没有办法从另一个包访问结构体的私有字段?

    我在一个包中有一个具有私有字段的结构 package foo type Foo struct x int y Foo 另一个包 例如 白盒测试包 需要访问它们 package bar import foo func change foo f
  • pprof 和 ps 之间的内存使用差异

    我一直在尝试分析用 cobra 构建的 cli 工具的堆使用情况 这pprof工具显示如下 Flat Flat Sum Cum Cum Name Inlined 1 58GB 49 98 49 98 1 58GB 49 98 os Read
  • 指针上定义的方法仍然可以用值调用

    Effective Go 文档说明如下 关于接收者的指针与值的规则是 可以在指针和值上调用值方法 但只能在指针上调用指针方法 http tip golang org doc effective go html pointers vs val
  • “http:多个response.WriteHeader调用”有什么不好的影响?

    尽管我发现 http 多个响应 WriteHeader 调用 例外 但我的服务器表现良好 此异常不会导致我的服务器出现恐慌或行为异常 我进行了很多搜索 但只找到了如何解决这个问题 没有文档描述异常的不良影响 有人可以帮我找出为什么 http
  • 如何在golang中获得两个切片的交集?

    Go 中有没有有效的方法来获取两个切片的交集 我想避免嵌套 for 循环之类的解决方案slice1 string foo bar hello slice2 string foo bar intersection slice1 slice2

随机推荐

  • myisamchk是用来做什么的?

    myisamchk是MySQL数据库管理系统中的一个工具 而不是Java编程语言的一部分 myisamchk是用于维护和修复MySQL数据库中MyISAM存储引擎表的工具 MyISAM是MySQL数据库中一种常用的存储引擎 它适用于读取频率
  • 冒泡排序代码python

    冒泡排序的python代码如下 def bubbleSort arr n len arr Traverse through all array elements for i in range n Last i elements are al
  • 微信小程序官方组件展示之画布canvas源码

    以下将展示微信小程序之画布canvas源码官方组件能力 组件样式仅供参考 开发者可根据自身需求定义组件样式 具体属性参数详见小程序开发文档 功能描述 画布 2 9 0 起支持一套新 Canvas 2D 接口 需指定 type 属性 同时支持
  • 数字IC设计——跨时钟域篇3(单比特处理)

    数字IC设计 跨时钟域篇3 单比特处理 下面介绍常见的单比特跨时钟域的处理方法 一 慢时钟域信号同步到快时钟域的处理方法 两级寄存器同步 慢时钟信号进入到更快的时钟域时 频率相差2倍以上 此时不用考虑快时钟域信号采样丢失问题 可以考虑使用两
  • java 线性表---------双向链表(源代码)

    1 public class DuLinkList
  • 【python数据挖掘课程】十二.Pandas、Matplotlib结合SQL语句对比图分析

    这篇文章主要讲述Python常用数据分析包Numpy Pandas Matplotlib结合MySQL分析数据 前一篇文章 python数据挖掘课程 十一 Pandas Matplotlib结合SQL语句可视化分析 讲述了MySQL绘图分析
  • msys2 修改国内源加速pacman

    1 msys2 修改国内源加速pacman 清华大学 etc pacman d mirrorlist mingw32 Server https mirrors tuna tsinghua edu cn msys2 mingw i686 1
  • netty源码分析之LengthFieldBasedFrameDecoder

    http www jianshu com p a0a51fd79f62 hmsr toutiao io utm medium toutiao io utm source toutiao io 拆包的原理 关于拆包原理的上一篇博文 netty
  • 五一节假期结束给团队开会,快速进入工作状态

    大家好 五一的假期大家过的都还开心吧 五一长假已经结束了 更开心的事情马上又要来了 再坚持10天 又要发工资了 再坚持上3天班又可以缓冲一下休息一天了 打工人 上班快乐 伴随着这些开心在这里我请大家尽快从自由松散的假期状态中走出来 重整旗鼓
  • Mac VS Code 如何去除右边的预览功能

    取消选中Minimap即可
  • Scala中的高阶函数

    1 定义 当一个函数 func1 中的 参数列表 传入的是函数 那么函数func1 就是高阶函数 上边几个函数可以 提炼出为一个高阶函数 因为 他们只是 黄线标志的部分不同 我们可以 定义一个 函数作为作为参数传递进去 来提取为 一般规律
  • opencv+nvcodec实现视频硬解码

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 系统配置 前言 一 NVCODEC是什么 二 OpenCV编译 1 安装Driver CUDA 2 编译OpenCV 总结 系统配置 操作系统 Ubuntu18 0
  • SpringMVC的拦截器

    SpringMVC的拦截器 SpringMVC的拦截器 SpringMVC的拦截器 01 SpringMVC拦截器 拦截器的作用 理解 02 SpringMVC拦截器 interceptor和filter区别 理解 记忆 03 Spring
  • style-components的熟练运用

    安装 首先下一个包 npm install save styled components 使用 创建组价以及根据属性加样式 import React Component from react import styled from style
  • driver.get_screenshot_as_file()没有保存图片的原因

    部分代码如下 cur time time strftime Y m d H M S filename os path dirname os path abspath screenshot cur time png driver get sc
  • JavaScript:实现简易计算功能

    JavaScript 实现简易计算功能 body部分
  • 数据结构:手撕图解单链表---phead的多种传参方式对比和辅助理解

    文章目录 为什么要引入链表 单链表 单链表的定义和原理 单链表的头插 对于指针的深层次理解 链表的尾插 封装malloc函数 尾删 头删 查找 链表中元素的插入 在某节点前插入 在某节点后插入 链表中元素的删除 删除pos位置的值 删除po
  • umi学习总结

    文章目录 umi介绍 umi是什么 umi的特性 开发环境 Node js 依赖管理工具 目录结构 路由 配置路由 页面跳转 Link组件 路由组件参数 路由动态参数 query信息 样式 使用css样式 dva 为什么需要状态管理 umi
  • Qt弹出窗口

    Qt弹出Widget窗口置顶 1 需求 Widget每次都弹出且为非模态窗口 2 老版代码 if widget NULL widget new QWidget widget gt show 想象 弹出窗口后 如果发生窗口切换 再次点击时 弹
  • Go语言常用的标准库

    文章目录 打印日志 系统调用命令 json的序列化和反序列化 base64 压缩和解压 标准输入 文件操作 目录操作 init函数 包的可见性 数学库 生成随机数 时间函数 打印日志 package main import log os f