文档章节

几种语言原生开发环境构建之--Go语言

jackblues
 jackblues
发布于 2016/08/08 15:27
字数 385
阅读 43
收藏 1
Go

go安装

安装gvm版本管理工具

$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
$ gvm install go1.7
$ go version

安装构建工具

安装gb工具

$ go get github.com/constabulary/gb/...
$ mkdir src && mkdir src/someuser && mkdir src/someuser/gofirst  # someuser是用户名称, gofirst是项目名称

编写代码

  • 源码
//vi   src/someuser/gofirst/main.go  源码
package main

import (
	"fmt"
	"github.com/tabalt/gracehttp"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "hello world")
	})

	err := gracehttp.ListenAndServe(":8080", nil)
	if err != nil {
		fmt.Println(err)
	}
}
  • 测试代码
 //vi   src/someuser/gofirst/main_test.go  测试代码
package main

import (
	"errors"
	"testing"
 )

func Division(a, b float64) (float64, error) {
	if b == 0 {
		return 0, errors.New("除数不能为0")
	}

	return a / b, nil
}
func Test_Division_1(t *testing.T) {
	if i, e := Division(6, 2); i != 3 || e != nil { //try a unit test on function
		t.Error("除法函数测试没通过") // 如果不是如预期的那么就报错
	} else {
		t.Log("第一个测试通过了") //记录一些你期望记录的信息
	}
}

安装glide包管理工具

$ curl https://glide.sh/get | sh

项目构建

  • 目录结构
   |-bin
   |-pkg
   |---linux-386
   |-----github.com
   |-------tabalt
   |-----wooz
   |-------http
   |---------vendor
   |-----------github.com
   |-------------tabalt
   |---------------gracehttp
   |-src
   |---wooz
   |-----http
   |-----somes
   |-------test
   |-vendor
   |---github.com
   |-----tabalt
   |-------gracehttp
   |---------gracehttpdemo
   |---src
  • 构建
$ glide init #初始化依赖到glide.yaml文件,并get依赖到vendor目录
$ glide   --debug up    #更新依赖
$ mkdir vendor/src  
$ mv vendor/g* vendor/src/
$ gb build #构建
$ gb test  -v # 测试或则 go  test src/test/*
  • 配置文件glide.yaml
package: .
import:
- package: github.com/tabalt/gracehttp
testImport:
- package: github.com/smartystreets/goconvey
  version: ^1.6.2
  subpackages:
  - convey
ignore:
   - wooz/somes     #此处忽略没有git管理的本地包名,让glide不用去github获取代码

项目源代码

© 著作权归作者所有

共有 人打赏支持
jackblues
粉丝 16
博文 33
码字总数 9669
作品 0
深圳
技术主管
分布式大规模图数据处理引擎--Graph Engine

Graph Engine 是一个基于内存的分布式大规模图数据处理引擎,能够帮助用户更方便地构建实时查询应用和高吞吐量离线分析平台。在此之前,它在学术界更广为人之的名称是 Trinity。 Graph Engi...

红薯
2015/05/22
1K
0
Flutter与Dart 入门

Flutter简介 Flutter是google推出的,一个使用Dart语言开发的跨平台移动UI框架,通过自建绘制引擎,能高性能、高保真地进行Android和IOS开发。 Flutter是什么 Flutter是谷歌的移动UI框架,可...

JadePeng
08/10
0
0
Red language 0.5.3 发布,优化编译速度

Red language 0.5.3 发布,此版本加快了编译的速度;扩展了 vector! 数据类型;引入了 Redbin,现在支持三种格式:MOLD,MOLD/ALL,Redbin;可以从 Redbol 工作台编译;还有一些 bug 修复。详...

oschina
2015/04/27
1K
4
Red language 0.6.1 发布,Reactive 编程

Red language 0.6.1 发布,带来了通用的reactive编程框架及修复了大量bug。 增加的主要功能如下: 面向对象的reactive编程模型 Time! 数据类型 更新 View 引擎 更新 Draw DSL 更新 VID DSL ...

我不是AI
2016/06/30
2.5K
2
Scala入门之工具篇

我初次接触Scala时,由于对Scala相关的工具不够熟悉,学习的效率低下。所以本文主要介绍Scala编程所必备的工具。一般而言,我们接触一门编程语言,都需要接触这门语言的编译器、REPL、构建工...

碎镜
2017/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
16分钟前
1
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
24分钟前
0
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
33分钟前
15
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
1
0
区块链技术中的那些能商用的企业级应用

WEPOWER是一家立陶宛初创企业,旨在改变可再生电力项目的付费方式。WePower公司创始人Nick Martyniuk表示,政府统一收购价的存在推动了全球风能与太阳能市场的发展。因此,他的公司希望帮助那...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部