golang 定时器

代码文件timer.go: package main import ( "bytes" "fmt" "github.com/unknwon/goconfig" "os/exec" "time" ) var config *goconfig.ConfigFile func init() { path := "./config.ini" conf, err := goconfig.LoadConfigFile(path) if err != nil { fmt.Print...阅读全文

2014-08-13 09:16 chen yuwen
阅读:6843 评论:0

Go中如何简洁的使用并发

文章转载自:http://www.waylau.com/golang-clear-concurreny/ 多核处理器越来越普及。有没有一种简单的办法,能够让我们写的软件释放多核的威力?是有的。随着Golang, Erlang, Scala等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式有一个极其简洁的内核,还有在此之上丰富的外延。可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 并发模式之内核 这种并发模式的内核只需要协...阅读全文

2014-05-07 16:48 u011774512
阅读:2363 评论:0

Go实例学:break 和 continue

利用break 可以提前退出循环,break 终止当前的循环;也可以定义标签,break指定的循环体。 break的用法示例1: package main import ( "fmt" ) func main() { for i := 0; i < 10; i++ { if i > 5 { break //终止这个循环,只打印0到5 } fmt.Println(i) } } 输出结果 0 1 2 3 4 5 break的用法示例2: 循环嵌套循环时,可以在break 后指定标签。用标签决定哪个循...阅读全文

阅读:25379 评论:0

Go语言关于XML的读取与生成

要读取的XML如下: <?xml version="1.0" encoding="UTF-8"?> <resources> <string name="VideoLoading">Loading video…</string> <string name="ApplicationName">what</string> </resources> 这种结构的XML,其末节点是属性与文本并存的(网上看到的大部分教程都是属性节点就是属性节点,文本节点就是文本节点) 根据这个XML,生成对应的struct ...阅读全文

2015-03-13 10:57 windvix
阅读:19351 评论:3

golang time 时间的加减法

time包中的Add和Sub的用法,Add用于计算某个时间之前和之后的时间点,Sub用于计算两个时间差 package main import ( "fmt" "strings" "time" ) func main() { // Add 时间相加 now := time.Now() // ParseDuration parses a duration string. // A duration string is a possibly signed sequence of decimal nu...阅读全文

阅读:57194 评论:2

Docker 非docker环境中编译安装

最近要修改docker的源码做一些开发,但是docker的官网给的编译方式是用docker提供的dockerfile文件编译一个docker 镜像然后在这个容器里面通过脚步编译docker。我们都知道1.11以后的docker实际上有docker dockerd docker-containerd runc 几个进程组成。如何我修改一次就要全部编译一遍多麻烦。所以我觉定自己go build 出docker的几个可执行文件。1. git clone github.com/moby/moby 现在d...阅读全文

2017.06.09 11:36 myonlyzzy
阅读:2547 评论:0

在 Golang 定时任务中判断函数是否执行完成

使用 golang 的定时任务(采用 robfig/cron 包),每 5s 调用一个函数进行处理,但是这个函数的处理可能会耗时,在没有执行完之前如果再次调用,就会导致计算结果不对。如定时任务:// 5s 定时任务 func run5Second() { spec := "*/5, *, *, *, *, *" c := cron.New() //npc刷新 c.AddFunc(spec, modelFish.NpcRefresh) c.Start() }NpcRefre...阅读全文

阅读:4273 评论:9

Golang依赖管理工具:glide从入门到精通使用

介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。 glide是Golang的包管理工具,是为了解决Golang依赖问题的。 为什么需要glide? 原因很简单,Go 语言原生包管理的缺陷。罗列一下golang的 get 子命令管理依赖有很多大缺陷: 能拉取源码的平台很有限,绝大多数依赖的是 github....阅读全文

2017-07-22 13:33:09 梦朝思夕
阅读:18345 评论:11

Go 系列教程 —— 17. 方法

欢迎来到 [Golang 系列教程](/subject/2) 的第 17 个教程。 ### 什么是方法? 方法其实就是一个函数,在 `func` 这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。 下面就是创建一个方法的语法。 ```go func (t Type) methodName(parameter list) { } ``` 上面的代码片段创建了一个接收器类型为 `Type` ...阅读全文

2018-01-22 18:00:02 polaris
阅读:29231 评论:18

Golang 中 strings.builder 的 7 个要点

自从 Go 1.10 发布的一个月以来,我多少使用了一下 `strings.Builder`,略有心得。你也许知道它,特别是你了解 `bytes.Buffer` 的话。所以我在此分享一下我的心得,并希望能对你有所帮助。 ## 1. 4 类写入(write)方法 与 `bytes.Buffer` 类似,`strings.Builder` 也支持 4 类方法将数据写入 builder 中。 ```go func (b *Builder) Write(p []byte) (int,...阅读全文

2018-04-14 10:58:21 snowInPluto
阅读:19618 评论:1

Golang中JSON解析结构体

一、StructTag介绍StructTag是go语言结构体中的一个标记字段,放在字段声明的后面,一般只有特定情况下会用到,如json的转化。 使用的时候只要把标记的字段用两个包起来即可,标签内的语法形式通常为key:”value”` ,多个标记用空格隔开。 1234type tagTest struct { tagA string `TagA` tagB int `TagB`} 二、Struct转Json要想把struct转化成json,只要把结构体内的字段名设置成导出状态,也就是把首字母大写...阅读全文

2017-08-25 00:00 马谦的博客
阅读:10319 评论:0

如何用golang实现一个定时器任务队列

golang中定时器 golang中提供了2种定时器timer和ticker(如果JS很熟悉的话应该会很了解),分别是一次性定时器和重复任务定时器。 一般用法: func main() { input := make(chan interface{}) //producer - produce the messages go func() { for i := 0; i < 5; i++ { input <- i } input <- "hello, world" }() t1 := time....阅读全文

2018-05-23 01:33:04 o0无忧亦无怖
阅读:14069 评论:2

golang map输出排序

由于GoLang Map 内部存储是无序的,当需要按顺序获得map存储的key -value值时,应该对遍历出来的结果进行重新排序; 在go 1.8版本后,提供的slice sort 功能使排序更简单: package main import ( "fmt" "sort" ) func main() { m := map[string]int{ "something": 10, "yo": 20, "blah": 20, } type kv struct { Key string Value i...阅读全文

2018-06-01 09:48 dpf-10
阅读:3749 评论:0

golang.org/x一键安装脚本

gox 通过github.com/golang,一键安装golang.org/x的包 对于大陆的gopher来说,go get 安装 golang.org/x的包经常失败 所以在这里写了一个bash脚本一键安装golang.org/x的包 windows用户 git-bash 来执行gox.sh这个脚本 *unix用户 先chmod +x gox.sh 添加可以执行权限.在使用./gox.sh执行一键安装 #!/usr/bin/env bash #为了兼容windows下的bash cd $GO...阅读全文

2018-09-07 15:34:42 trytv
阅读:2298 评论:0

Go 语言中你应该知道的关于 Package 的所有

*一个 Go 编程语言的包管理及应用的全面概述* 如果你对像 **Java** 或者 **NodeJS** 这样的语言熟悉,那么你可能对**包**(译者注:原文中 **packages** ,后文中将其全部译为中文出现在文章表述中)相当熟悉了。包不是什么其他的,而是一个有着许多代码文件的目录,它从单个引用点显示不同的变量(特征)。让我来解释一下,这是什么意思。 设想在某个项目上工作,你需要不断的修改超过一千个函数。这之中的一些函数有相同的行为。比如,`toUpperCase` 和 `toLo...阅读全文

2018-12-08 10:00:08 yixiaoer
阅读:16213 评论:0

如何优雅的使用Go接口?

面向对象编程(OOP)中三个基本特征分别是封装,继承,多态。在 Go 语言中封装和继承是通过 struct 来实现的,而多态则是通过接口(interface)来实现的。 #### 什么是接口 在 Go 语言中接口包含两种含义:它既是方法的集合, 同时还是一种类型. 在Go 语言中是*隐式实现*的,意思就是对于一个具体的类型,不需要声明它实现了哪些接口,只需要提供接口所必需的方法。 在 Go 语言的类型系统中有一个核心概念: **我们不应该根据类型可以容纳哪种数据而是应该根据类型...阅读全文

阅读:825 评论:0

golang-浅谈goroutine

前言 相信听说go这门语言的同学都知道go在并发方面相对其它语言而言更突出,并发是所有的语言都有的功能,而为什么go相对较好,它究竟哪里好,底层的实现是怎么样的? 基于这些疑惑并为了对goroutine有近一步了解,近期参考相关的资料,并在此对goroutine一些相关的知识做个总结,希望本篇文章能有大家有所帮助。 基本概念 在开始认识goroutine之前,我们需要对以下一些知识点有个基本了解 1.进程、线程、协程 我们知道在操作系统中能够用进程和线程进行并发编程,但进程和线程存在着什么差异呢...阅读全文

阅读:952 评论:0