『Golang』—— 标准库之 time】的更多相关文章

Golang 的 os 库基本承袭 Unix 下 C 语言的用法 path 库: func Base(path string) string //取文件名,不含目录部分 func Dir(path string) string //取路径中的目录名部分,不含文件名 func Join(elem ...string) string //拼接字段,中间自动添加 ‘/’ os 库: package main import "os" import "os/exec" imp…
... package main import ( "fmt" "time" ) func main() { time.AfterFunc(time.Millisecond*, after_func) fmt.Println("Now, time.After 1 second") ac := time.After(time.Second) //每次调用都会重新计时 <-ac timer := time.NewTimer(time.Milli…
目录 1. 字符串简介 2. 字符串的拼接 3. 有关 string 的常用处理 3.1 strings 包 3.1.1 判断两个 utf-8 编码字符串是否相同 3.1.2 判断字符串 str 是否是以 prefix 开头 3.1.3 判断字符串 str 是否是以 suffix 结尾 3.1.4 判断 s 在 str 中首次出现的位置,如果没有出现返回 -1 3.1.5 判断 s 在 str 中最后一次出现的位置,如果没有出现返回 -1 3.1.6 查询非 ASCII 编码的字符在父字符串中的…
作为一门 21 世纪的语言,Go 原生支持应用之间的通信(网络,客户端和服务端,分布式计算)和程序的并发.程序可以在不同的处理器和计算机上同时执行不同的代码段.Go 语言为构建并发程序的基本代码块是 协程 (goroutine) 与通道 (channel).他们需要语言,编译器,和runtime的支持.Go 语言提供的垃圾回收器对并发编程至关重要. 不要通过共享内存来通信,而通过通信来共享内存. 1. 并发.并行和协程 1.1 什么是协程 一个应用程序是运行在机器上的一个进程:进程是一个运行在自…
方法和类型的反射 反射是应用程序检查其所拥有的结构,尤其是类型的一种能.每种语言的反射模型都不同,并且有些语言根本不支持反射.Go语言实现了反射,反射机制就是在运行时动态调用对象的方法和属性,即可从运行时态的示例对象反求其编码阶段的定义,标准库中reflect包提供了相关的功能.在reflect包中,通过reflect.TypeOf(),reflect.ValueOf()分别从类型.值的角度来描述一个Go对象. func TypeOf(i interface{}) Type type Type…
接口是什么 Go 语言不是一种 "传统" 的面向对象编程语言:它里面没有类和继承的概念. 但是 Go 语言里有非常灵活的 接口 概念,通过它可以实现很多面向对象的特性.接口提供了一种方式来 说明 对象的行为:如果谁能搞定这件事,它就可以用在这儿. Go语言接口定义了一组方法集合,但是这些方法集合仅仅只是被定义,它们没有在接口中实现.接口(interface)类型是Go语言的一种数据类型.而因为所有的类型包括自定义类型都实现了空接口interface{},所以空接口interface{}…
原文 package termbox import "github.com/nsf/termbox-go" termbox-go 是一个用于创建跨平台TUI(基于文本的用户界面)的库. 索引 Variables func CellBuffer() []Cell func Clear(fg, bg Attribute) error func Close() func Flush() error func HideCursor() func Init() error func Interr…
可见性规则 在Go语言中,标识符必须以一个大写字母开头,这样才可以被外部包的代码所使用,这被称为导出.标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的.但是包名不管在什么情况下都必须小写. 在设计Go语言时,设计者们也希望确保它不是过于以ASCII为中心,这意味着需要从7位ASCII的范围来扩展标识符的空间. 所以Go语言标识符规定必须是Unicode定义的字母或数字,标识符是一个或多个Unicode字母和数字的序列, 标识符中的第一个字符必须是Unicode…
本文介绍golang中的优秀web开发框架martini! 序 Martini框架是使用Go语言作为开发语言的一个强力的快速构建模块化web应用与服务的开发框架.Martini是一个专门用来处理Web相关内容的框架,其并没有自带有关ORM或详细的分层内容.所以当我们使用Martini作为我们的开发框架时,我们还需要选取适合的ORM等其他包. 安装 go get github.com/codegangsta/martini 使用 我们可以使用如下的代码来测试我们安装的包是否是可用的: // ser…
有关在Golang中使用mho进行MongoDB操作的最简单的例子.…
由于要开发一个小型的web应用,而web应用大部分都会使用json作为数据传输的格式,所以有了这篇文章. 包引用 import ( "encoding/json" "github.com/bitly/go-simplejson" // for json get ) 用于存放数据的结构体 type MyData struct { Name string `json:"item"` Other float32 `json:"amount&q…
目录 1. fmt 包初识 2. 格式化 verb 应用 2.1 通用 2.2 布尔值 2.3 整数 2.4 浮点数与复数 2.5 字符串和 []byte 2.6 指针 2.7 其他 flag 2.8 有效位输出 1. fmt 包初识 在 fmt 包,有关格式化输入输出的方法就两大类:Scan 和 Print ,分别在scan.go 和 print.go 文件中. print.go文件中定义了如下函数: func Printf(format string, a ...interface{}) (…
标识符 字母或下划线开头 之后只能出现数字.字母.下划线 大小写敏感 Go语言关键字 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 此外,还有大约30多个预定义的名字,比如int和true等,主要对应内建的常量.类型和函数 内建常量: t…
简介 go语言是由Google进行维护的一个编程语言,发布自2009年.其以良好的编程风格.优秀的并发机制被广大的技术人员所接受. 使用go语言开发的优秀的产品: Docker gocode lime go语言的优秀框架: Beego --- web framework Martini --- web framework base on Restful mgo --- data driver fot mongodb gorp --- orm termbox-go --- UI in comman…
Go 没有像 Java 和 .NET 那样的 try/catch 异常机制:不能执行抛异常操作.但是有一套 defer-panic-and-recover 机制. Go 的设计者觉得 try/catch 机制的使用太泛滥了,而且从底层向更高的层级抛异常太耗费资源.他们给 Go 设计的机制也可以 "捕捉" 异常,但是更轻量,并且只应该作为(处理错误的)最后的手段. Go 是怎么处理普通错误的呢?通过在函数和方法中返回错误对象作为它们的唯一或最后一个返回值--如果返回 nil,则没有错误发…
我们总结一下前面看到的:Go 没有类,而是松耦合的类型.方法对接口的实现. 面向对象语言最重要的三个方面分别是:封装,继承和多态,在 Go 中它们是怎样表现的呢? Go实现面向对象的两个关键是struct和interface,结构代替类,因为Go语言不提供类,但提供了结构体或自定义类型,方法可以被添加到结构体或自定义类型中.结构体之间可以嵌套,类似继承.而interface定义接口,实现多态性. 封装(数据隐藏) 和别的面向对象语言有 4 个或更多的访问层次相比,Go 把它简化为了 2 层: 包…
结构体 结构体类型 Go 通过结构体的形式支持用户自定义类型,或者叫定制类型. Go 语言结构体是实现自定义类型的一种重要数据类型. 结构体是复合类型(composite types),它由一系列属性组成,每个属性都有自己的类型和值的,结构体通过属性把数据聚集在一起. 结构体类型和字段的命名遵循可见性规则. 方法(Method)可以访问这些数据,就好像它们是这个独立实体的一部分. 结构体是值类型,因此可以通过 new 函数来创建. 结构体是由一系列称为字段(fields)的命名元素组成,每个元素…
map是一种元素对的无序集合,一组称为元素value,另一组为唯一键索引key. 未初始化map的值为nil.map 是引用类型,可以使用如下声明: var map1 map[keytype]valuetype var map1 map[string]int [keytype] 和 valuetype 之间允许有空格,但是 gofmt 移除了空格 在声明的时候不需要知道 map 的长度,map 是可以动态增长的. 未初始化的 map 的值是 nil. key 可以是任意可以用 == 或者 !=…
数组 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构):这种类型可以是任意的原始类型例如整型.字符串或者自定义类型. 数组长度必须是一个常量表达式,并且必须是一个非负整数. 数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的. 一维数组 一维数组声明以及初始化常见方式如下: var arrAge = [5]int{18, 20, 15, 22, 16} var arrName = [5]string{3: "Chris",…
函数介绍 Go语言函数基本组成包括: 关键字func 函数名 参数列表 返回值 函数体 返回语句 语法如下: func 函数名(参数列表) (返回值列表) { // 函数体 return } 除了main().init()函数外,其它所有类型的函数都可以有参数与返回值 一个简单的例子: package main func main() { println("In main before calling greeting") greeting() println("In mai…
条件语句 if 是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行if后由大括号括起来的代码块,否则就忽略该代码块继续执行后续的代码. if condition { // do something } 如果存在第二个分支,则可以在上面代码的基础上添加 else 关键字以及另一代码块,这个代码块中的代码只有在条件不满足时才会执行.if 和 else 后的两个代码块是相互独立的分支,只可能执行其中一个. if condition { // do something } else {…
  原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gotaly.blog.51cto.com/8861157/1405754 Golang的标准库提供了log的机制,但是该模块的功能较为简单(看似简单,其实他有他的设计思路).不过比手写fmt. Printxxx还是强很多的.至少在输出的位置做了线程安全的保护.其官方手册见Golang log (天朝的墙大家懂的).这里给出一个简单使用的例子: 1 2 3 4 5 6 7 p…
Golang实现requests库 简单的封装下,方便使用,像python的requests库一样. Github地址 Github 支持 GET.POST.PUT.DELETE application/json.application/x-www-form-urlencoded 不支持: multipart/form-data(现已支持,2019-04-16更新) 使用 下面是常用的例子,GET请求:POST表单提交.json提交,保存文件等. Get func getText() { tex…
简介 国庆看完 << Go 语言圣经 >>,总想做点什么,来加深下印象.以可视化的方式展示 golang 标准库之间的依赖,可能是一个比较好的切入点.做之前,简单搜了下相关的内容,网上也要讨论,但是没有发现直接能拿过来用的.标准库之间,是必然存在依赖关系的,不同库被依赖的程度必然是不一样的.但究竟有多大差别呢? 以下内容,数据源自真实环境的 golang 1.9 版本的标准库.所以,本文不仅是一篇可视化相关的讨论文章,更是提供了一个可以直接探究 golang 标准库间依赖关系的快速…
net/rpc是golang提供的一个实现rpc的标准库.…
前言 Mock是一个做自动化测试永远绕不过去的话题.本文主要介绍使用标准库net/http/httptest完成HTTP请求的Mock的测试方法. 可能有的小伙伴不太了解mock在实际自动化测试过程中的意义,在我的另外一篇博客中有比较详细的描述,在本文中我们可以简单理解为它可以解决测试依赖.下面我们一起来学习它. http包的HandleFunc函数 我们在前面的文章中介绍过怎么发送各种http请求,但是没有介绍过怎么使用golang启动一个http的服务.我们首先来看看怎么使用golang建立…
Golang 源码剖析:log 标准库 原文地址:Golang 源码剖析:log 标准库 日志 输出 2018/09/28 20:03:08 EDDYCJY Blog... 构成 [日期]<空格>[时分秒]<空格>[内容]<n> 源码剖析 Logger type Logger struct { mu sync.Mutex prefix string flag int out io.Writer buf []byte } (1) mu:互斥锁,用于确保原子的写入(2) p…
  原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gotaly.blog.51cto.com/8861157/1406905 前一篇文章我们看到了Golang标准库中log模块的使用,那么它是如何实现的呢?下面我从log.Logger开始逐步分析其实现. 其源码可以参考官方地址 1.Logger结构 首先来看下类型Logger的定义: 1 2 3 4 5 6 7 type Logger struct {     mu    …
前言 不做文字搬运工,多做思路整理 就是为了能速览标准库,只整理我自己看过的...... 最好能看看英文的 标准库 fmt strconv string 跳转 golang知识库总结…
在开发过程中可能会遇到这样的情况,有一些包是引入自不同地方的,比如: golang.org/x/net/html 和 net/html, golang.org/x/crypto 和 crypto. 那这是什么原因呢? 引用 Go 官方 Wiki 的说法: The golang.org/x/... repositories are part of the Go Project but outside the main Go tree. They are developed under looser…