golang入门教程
本专栏目前为Go入门教程,等项目结束,再陆续出进阶教程和深入教程。
天天water
不要在该奋斗的年纪,选择安逸。
展开
-
go学习(一)——编译环境安装
CentOS下安装go语言编译环境安装包下载地址为:https://golang.org/dl/。各个系统对应的包名: 解压安装1、下载源码包:go1.7rc3.linux-amd64.tar.gz2、将下载的源码包解压至 /usr/local目录。tar -C /usr/local -xzf go1.7rc3.linux-amd64.tar.gz3、将原创 2017-07-30 12:20:35 · 4986 阅读 · 0 评论 -
go学习(二)——基本数据类型和基本语法
在 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。Go 语言按类别有以下几种数据类型:1布尔型布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。原创 2017-07-30 12:22:14 · 4171 阅读 · 0 评论 -
go学习(三)——gdb调试
前言:GO语言对GDB的版本是至少为gdb7以上,才能比较好的打印任意变量,如果低于这个版本,会出现一些问题。以下是记录单步调试使用的几个打印变量。info frame,打印当前栈参数。info locals打印局部变量info args打印参数。bt显示当前堆栈x/3xw &r查看内存删除调试符号:go build -ldflags “-s -w” filenam原创 2017-07-30 12:23:25 · 4480 阅读 · 0 评论 -
go学习(四)——调用C库
网上有很多讲解使用CGO实现Go中调用C代码的博客。总结起来,go中调用C一共有两种办法: 第一种是将C代码直接嵌入到GO源文件中 第二种是将C代码写在C文件中,再在GO文件中引入go 语言调用C库示例://foo.hint count;void foo();//foo.c#include #include "foo.h"in原创 2017-07-30 12:24:45 · 5350 阅读 · 0 评论 -
go学习(五)——基本数据类型转换
Go数据类型和C数据类型转换1. 基本类型转换Go转换成C:var i intci:=C.int(i) C转换成Go:vari C.intgoi:=int(i)2. 字符串类型转换Go转换成C:var str stringcstr := C.CString(str)C转换成Go:/*#include #include char foo[]原创 2017-07-30 12:25:53 · 4396 阅读 · 0 评论 -
go学习(六)——结构体初始化
package mainimport ( "fmt")type Info struct { Cpu string Mem string Disk string}type Product struct { Info Id string Name string}func main() { p1 := Product原创 2017-08-31 15:15:21 · 5789 阅读 · 0 评论 -
go学习(七)——统计程序执行时间
方法一: //记录开始时间 start := time.Nanoseconds() //计算过程 sum := 0 for i := 0; i <= 100000000; i++{ sum += i } //记录结束时间 end := time.Nanoseconds() //输出执行时间,单位为毫秒。 fmt.Println((end - start) / 1原创 2017-08-31 15:59:14 · 6544 阅读 · 0 评论 -
go学习(八)——GVM管理Go版本
1.为什么要安装GVM1.1什么是GVMGVM是一个golang虚拟环境配置工具,其允许一台机器上安装多个golang版本,gvm是第三方开发的Go多版本管理工具,类似ruby里面的rvm工具。使用起来相当的方便。它是以shell脚本开发的工具,同时兼容bash和zsh,用法和ruby的rvm很像,能做到Go语言版本的切换以及GOPATH的修改。1.2Go的项目隔离在我们进行一个项原创 2017-09-18 17:48:21 · 7898 阅读 · 0 评论 -
go学习(九)——Go tool pprof之runtime/pprof 的使用
测试环境:centos7 go1.9 go1.6 gvmv1.0.22Go 中监控代码性能的有两个包:net/http/pprofruntime/pprof这两个包都是可以监控代码性能的, 只不过net/http/pprof是通过http端口方式暴露出来的,内部封装的仍然是runtime/pprof。1.CPU ProfilingGolang 提供了 pprof 包(run原创 2017-09-20 18:11:08 · 20362 阅读 · 0 评论 -
go学习(十)——Go 语言范围(Range)
Go 语言中 range 关键字用于for循环中迭代数组(array)、切片(slice)、链表(channel)或集合(map)的元素。在数组和切片中它返回元素的索引值,在集合中返回 key-value 对的 key 值。示例:package mainimport "fmt"func main() { //这是我们使用range去求一个slice的和。使用数组跟这个原创 2017-09-28 14:07:34 · 4901 阅读 · 0 评论 -
go学习(十一)——Go 语言自动化测试
自动化测试自动化测试框架go程序测试测试对象准备例子代码功能测试用例执行测试显示执行详细信息压力测试用例执行测试详细信息总结在这篇文章中将会学习一下如何在go语言中使用testing包进行功能测试和性能测试。自动化测试正如Martin Fowler所说的”在你不知道如何测试代码之前,就不该编写程序。而一旦你完成了程序,测试代码也应该完成。除非原创 2017-09-28 14:08:56 · 5294 阅读 · 0 评论 -
go学习(十二)——Go 语言错误与异常处理机制
错误处理error接口defer--延迟语句例子1:defer语句加载时记录值例子2:在函数返回后执行例子3:defer语句会读取主调函数的返回值,并对返回值赋值.(注意和例子2的区别)panic-recover运行时异常处理机制panic()recover()写在前面: 近来关于对Golang的讨论有很多,七牛的几个大牛们也断定Go语言在未来将会快速发展,这里原创 2017-09-28 14:10:13 · 6519 阅读 · 0 评论 -
go学习(十三)——Go 语言socket用户并发请求性能测试
前言:测试环境:windows10虚拟机vmware安装的centos6.9内存2g,处理器数量2个,每个处理器核心数量2个Go版本 go1.7.3 linux/amd64说明:本次测试目的:本次测试Go语言的网络服务端在处理大量并发请求时的耗用时间。测试程序:服务端程序:package mainimport ( "fmt" "log"原创 2017-10-10 15:35:48 · 9347 阅读 · 0 评论 -
go学习(十四)——Go和Python操作mongodb性能对比统计
前言:Go测试环境:windows10虚拟机vmware安装的centos6.9内存2g,处理器数量2个,每个处理器核心数量2个Go版本1.7.3beego版本1.9.0MongoDB版本3.4.7Python测试环境:windows10虚拟机vmware安装的centos7.0内存2g,处理器数量2个,每个处理器核心数量2个Python版本2.7.原创 2017-10-10 15:45:16 · 11977 阅读 · 0 评论