Go语言标准库之time

时间和日期是我们编程中经常会用到的,本文主要介绍了Go语言内置的time包的基本用法。 time包 time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。 时间类型 time.Time类型表示时间。我们可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。示例代码如下: functimeDemo(){ now:=time.Now()//获取当前时间 fmt.Printf("currenttime:%vn",now) year

  • 0
  • 0
  • 阅读 ( 1160 )

Go语言标准库之flag

Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。 packagemain import( "fmt" "os" ) //os.Argsdemo funcmain(){ //os.Args是一个[]string iflen(os.Args)>0{ forindex,arg:=rangeos.Args{ fmt.Printf("a

  • 0
  • 0
  • 阅读 ( 1343 )

Go语言标准库之log

无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯。 log Go语言内置的log包实现了简单的日志服务。本文介绍了标准库log的基本使用。 使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法。本包也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print|Printf|Println

  • 0
  • 0
  • 阅读 ( 1499 )

Go语言文件操作

  本文主要介绍了Go语言中文件读写的相关操作。   文件是什么?   计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。   打开和关闭文件   os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。   packagemain import( "fmt" "os" ) funcmain(){ //只读方式打开当前目录下的main.go文件 fi

  • 0
  • 0
  • 阅读 ( 1127 )

Go语言标准库之strconv

Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。 strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数:Atoi()、Itia()、parse系列、format系列、append系列。 更多函数请查看官方文档。 string与int类型转换 这一组函数是我们平时编程中用的最多的。 Atoi() Atoi()函数用于将字符串类型的整数转换为int类型,函数签名如下。 funcAtoi(sstring)(iint

  • 0
  • 0
  • 阅读 ( 1195 )

Go语言标准库之net/http

  Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现。   net/http介绍   Go语言内置的net/http包提供了HTTP客户端和服务端的实现。   HTTP协议   超文本传输协议(HTTP,HyperTextTransferProtocol)是互联网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。   HTTP客户端   基本的HTTP/HTTPS

  • 0
  • 0
  • 阅读 ( 1244 )

Go语言标准库之context

在Gohttp包的Server中,每一个请求在都有一个对应的goroutine去处理。请求处理函数通常会启动额外的goroutine用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的goroutine通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。当一个请求被取消或超时时,所有用来处理该请求的goroutine都应该迅速退出,然后系统才能释放这

  • 0
  • 0
  • 阅读 ( 835 )

Go语言标准库之http/template

html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用html/template这个包。 模板与渲染 在一些前后端不分离的Web架构中,我们通常需要在后端将一些数据渲染到HTML文档中,从而实现动态的网页(网页的布局和样式大致一样,但展示的内容并不一样)效果。 我们这里说的模板可以理解

  • 0
  • 0
  • 阅读 ( 1199 )

解决go get下载包失败问题

由于某些不可抗力的原因,国内使用goget命令安装包时会经常会出现timeout的问题。本文介绍几个常用的解决办法。 从github克隆 golang在github上建立了一个镜像库,如https://github.com/golang/net就对应是https://golang.org/x/net的镜像库。要下载golang.org/x/net包,可以在本地创建包的目录后使用gitclone来拉取相应包的源代码文件,具体操作如下: mkdir-p$GOPATH/src/golang.org/x cd$

  • 0
  • 0
  • 阅读 ( 1489 )

Go依赖管理及Go module使用

Go语言的依赖管理随着版本的更迭正逐渐完善起来。 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决? godep Go语言从v1.5开始开始引入vendor模式,如果项目目录下有vendor目录,那么go工具链会优先使用vendor内的包进行

  • 0
  • 0
  • 阅读 ( 1232 )

二进制协议gob及msgpack介绍

本文主要介绍二进制协议gob及msgpack的基本使用。 最近在写一个gin框架的session服务时遇到了一个问题,Go语言中的json包在序列化空接口存放的数字类型(整型、浮点型等)都序列化成float64类型。 我们构造一个结构体如下: typesstruct{ datamap[string]interface{} } json序列化的问题 funcjsonDemo(){ vars1=s{ data:make(map[string]interface{},8), } s1.dat

  • 0
  • 0
  • 阅读 ( 1472 )

Go语言操作Redis

在项目开发中redis的使用也比较频繁,本文介绍了Go语言如何操作Redis。 Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。 Redis支持的数据结构 Redi

  • 0
  • 0
  • 阅读 ( 1934 )

Go操作NSQ

NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ。 NSQ NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异。NSQ的优势有以下优势: NSQ提倡分布式和分散的拓扑,没有单点故障,支持容错和高可用性,并提供可靠的消息交付保证 NSQ支持横向扩展,没有任何集中式代理。 NSQ易于配置和部署,并且内置了管理界面。 NSQ

  • 0
  • 0
  • 阅读 ( 1536 )

Go操作kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。本文介绍了如何使用Go语言发送和接收kafka消息。 sarama Go语言中连接kafka使用第三方库:github.com/Shopify/sarama。 下载及安装 gogetgithub.com/Shopify/sarama 注意事项 saramav1.20之后的版本加入了zstd压缩算法,需要用到cgo,在Windows平台

  • 0
  • 2
  • 阅读 ( 4194 )

Go操作etcd

etcd是近几年比较火热的一个开源的、分布式的键值对数据存储系统,提供共享配置、服务的注册和发现,本文主要介绍etcd的安装和使用。 etcd etcd介绍 etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。 类似项目有zookeeper和consul。 etcd具有以下特点: 完全复制:集群中的每个节点都可以使用完整的存档 高可用性:Etcd

  • 0
  • 0
  • 阅读 ( 1262 )

Go语言获取系统性能数据gopsutil库

psutil是一个跨平台进程和系统监控的Python库,而gopsutil是其Go语言版本的实现。本文介绍了它的基本使用。 Go语言部署简单、性能好的特点非常适合做一些诸如采集系统信息和监控的服务,本文介绍的gopsutil库是知名Python库:psutil的一个Go语言版本的实现。 安装 gogetgithub.com/shirou/gopsutil 使用 CPU 采集CPU相关信息。 import"github.com/shirou/gopsutil/cpu" //cpuinfo func

  • 0
  • 0
  • 阅读 ( 1082 )

Go第三方日志库logrus

日志是程序中必不可少的一个环节,由于Go语言内置的日志库功能比较简洁,我们在实际开发中通常会选择使用第三方的日志库来进行开发。本文介绍了logrus这个日志库的基本使用。 logrus介绍 Logrus是Go(golang)的结构化logger,与标准库logger完全API兼容。 它有以下特点: 完全兼容标准日志库,拥有七种日志级别:Trace,Debug,Info,Warning,Error,FatalandPanic。 可扩展的Hook机制,允许使用

  • 0
  • 0
  • 阅读 ( 1213 )

Go语言项目中使用zap日志库(翻译)

本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档。 在Go语言项目中使用Uber-go的ZapLogger 介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中,而不是应用程序控制台。 日志切割-能够根据文件大小、时间或间隔等来切割日志文件。

  • 0
  • 0
  • 阅读 ( 1321 )

Go pprof性能调优

在计算机性能调试领域里,profiling是指对应用程序的画像,画像就是应用程序使用CPU和内存的情况。Go语言是一个对性能特别看重的语言,因此语言中自带了profiling的库,这篇文章就要讲解怎么在golang中做profiling。 Go性能优化 Go语言项目中的性能优化主要有以下几个方面: CPUprofile:报告程序的CPU使用情况,按照一定频率去采集应用程序在CPU和寄存器上面的数据 MemoryProfile(HeapP

  • 0
  • 0
  • 阅读 ( 1038 )

Go语言中的单例模式(翻译)

在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python、PHP、Ruby)转向Go语言的跨语言学习者。Go语言太容易实现并发了,以至于它在很多地方被不正确的使用了。 Go语言中的单例模式 在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python、PHP、Ruby)转向Go语言的跨语言学习者。 在过去的很长时间里,很多开发人员和初创公司都习惯

  • 0
  • 0
  • 阅读 ( 1182 )