包含标签 golang 的文章

golang 中的 iota 标识符

golang 中没有明确定义的枚举类型,通常我们借助iota标识符构造一组自增的常量值来实现枚举类型。

自增作用范围为常量组。可在多常量定义中使用多个iota,它们各自单独计数,只须确保组中每行常量的列数量相同即可。

阅读全文

golang 基础类型整理

type length default comment
bool 1 false
byte 1 0 uint8
int,uint 4,8 0 默认整数类型,依据目标平台,32或64位
int8,uint8 1 0 -128~127, 0~255
int16,uint16 2 0 -32,768~32,767, …

阅读全文

基于 gitlab-ci 构建 golang 项目 CI 环境

自己在 github 上托管 go 开源项目,CI 使用 travis 的服务感觉很方便,几乎不需要额外的设置,但是涉及到公司的项目,通过 gitlab-ci 来跑 golang 项目的 CI,需要一点技巧。

思路大致是这样:

  1. 创建项目在 GOPATH 中的目录的 symbolic link ,指向 gitlab-runner 在该项目上执行 CI 时 …

阅读全文

golang test techniques

golang test techniques

func twoSum(nums []int, target int) []int {
    for i := 0; i < len(nums); i++ {
        for j := i + 1; j < len(nums); j++ {
            if …

阅读全文

sync.Once 实现 golang 中的单例模式

sync.Once 实现 golang 中的单例模式

sync.once可以控制函数只能被调用一次,不能多次重复调用。因此,可以利用这个特性实现一个线程安全的单例模式。

import (
    "sync"
)
 
type singleton struct {
}
 
var instance *singleton
var …

阅读全文

golang 应用日志实践

golang 应用日志实践

这里可以分为命令行应用和服务端应用两类情况

命令行客户端应用

典型就是 kubectl 这种客户端应用,下面是一个使用 op/go-logging 库配置多端输出的例子,应用将会同时输出到标准输出和写入日志文件

var formatStdout = logging.MustStringFormatter( …

阅读全文

CentOS 上搭建 grafana 开发环境

CentOS 上搭建 grafana 开发环境

主要过程参考grafana/grafana 的github主页

环境要求

设置代理(必须,多个包依赖的源需要FQ才能访问)

预先安装依赖

yum install -y git bison gcc

需要预先安装 go1.7(官方要求,go 1.6 编译存在问题)

这里通过 gvm 这个go语言多版 …

阅读全文