golang
fearless11
记录
展开
-
slice
概念Slice切片是对底层数组Array的封装,在内存中的存储本质就是数组,体现为连续的内存块,Go语言中的数组定义之后,长度就已经固定了,在使用过程中并不能改变其长度,而Slice就可以看做一个长度可变的数组进行使用,最为关键的,是数组在使用的过程中都是值传递,将一个数组赋值给一个新变量或作为方法参数传递时,是将源数组在内存中完全复制了一份,而不是引用源数组在内存中的地址,为了满足内存空间的复用和转载 2017-04-23 11:10:33 · 488 阅读 · 0 评论 -
有缓冲的通道
有缓冲的通道(buffered channel)是一种在接收前能存储一个或多个值的通道。这种类型并不强制要求goroutine之间必须同时完成发送和接收。只有在通道中没有要接收的值时,接收动作才会阻塞。只有在没有缓冲空间时,发送动作才会阻塞。package mainimport ( "fmt" "math/rand" "sync" "time")const (翻译 2017-09-03 14:24:36 · 378 阅读 · 0 评论 -
无缓冲chan
通过goroutine之间同步数据,来模拟接力比赛。4个跑步者绕赛道轮流跑。第二个、第三个、第四个要接到前一个跑步接力棒才能跑。在同步接力棒时,参与接力的两个跑步者必须在同一时刻做好准备。package mainimport ( "fmt" "math/rand" "sync" "time")var wg sync.WaitGroupfunc init() {翻译 2017-09-03 12:06:43 · 564 阅读 · 0 评论 -
mutex&chan
同步访问共享资源的方式:互斥锁互斥锁用于在代码上创建一个临界区,保证同一时间只有一个goroutine可以执行这个临界区代码。package mainimport ( "fmt" "runtime" "sync")var ( counter int wg sync.WaitGroup mutex sync.Mutex)func mai翻译 2017-09-03 10:34:21 · 310 阅读 · 0 评论 -
Go指南练习之《斐波纳契闭包》
函数的闭包Go 函数可以是一个闭包。闭包是一个函数值,它引用了其函数体之外的变量。 该函数可以访问并赋予其引用的变量的值,换句话说,该函数被“绑定”在了这些变量上。 例如,函数 adder 返回一个闭包。每个闭包都被绑定在其各自的 sum 变量上。 func adder() func(int) int { sum := 0 return func(x int) int {转载 2017-08-20 11:11:52 · 1990 阅读 · 0 评论 -
在Go语言中使用JSON
Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error:func Marshal(v interface{}) ([]byte, error)Marshal函数将会递归遍历整个对象,依次按成员类型对这个对象进行编码,类型转换规则如下:bool类型 转换为JSON的Boolean 整数,浮点数等数值类型 转换为JSON的Number stri转载 2017-07-26 00:30:24 · 445 阅读 · 0 评论 -
[golang note] 错误处理
错误处理 • 错误处理的标准模式 golang错误处理的标准模式:error接口。 golang函数如果要返回错误,规范上是将error作为多返回值中的最后一个,但这并非是强制要求。▶ error接口type error interface { Error() string}▶ 内置的error类型使用▪ 语法如下func 函数名(参数列表) (返回值转载 2017-06-08 11:18:48 · 393 阅读 · 0 评论 -
go交叉编译
指定叉编译目标: GOARCH 目标平台(编译后的目标平台)的处理器架构(386、amd64、arm) GOOS 目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows)(一)Windows 下编译Linux 64位可执行程序: SET CGO_ENABLED=0 //不设置也可以,原因不明 SET GOOS=linux原创 2017-06-05 22:39:32 · 3267 阅读 · 1 评论 -
http的GET请求和查看返回结果
package mainimport ( "fmt" "io/ioutil" "log" "net/http")func main() { res, err := http.Get("http://baidu.com") if err != nil { log.Fatal(err) } robots, err := io原创 2017-04-23 13:51:30 · 2341 阅读 · 0 评论 -
一个完整的通过encoding/json信息传递格式,采用http.POST利用进行与服务器通信,并对返回结果进行解析处理的典型案例
package main import ( "fmt" "net/http" "encoding/json" "bytes" ) //需要编码的参数 parameter := map[string]string{"id": 123456} //利用e转载 2017-04-23 13:24:30 · 910 阅读 · 0 评论 -
go json解析Marshal和Unmarshal
go语言提供一个json解析的包。见 http://golang.org/pkg/encoding/json/官方同时提供了一篇文章 JSON and Go 讲述json包的用法, 该文章同时存在中文翻译: JSON与Go 。看过上述两篇文章后,基本使用应该就没问题了。同时,贴几个官方的例子,方便理解。 Decoderpackage main import ( "encoding/jso转载 2017-04-23 12:11:05 · 55549 阅读 · 0 评论 -
go包管理工具glide
一、命令 安装 $ go get github.com/Masterminds/glide $ go install github.com/Masterminds/glide 初始化项目并在当前项目下创建glide.yaml文件 glide create glide init 更新解析下载包依赖 glide updat...原创 2018-04-21 14:05:20 · 1029 阅读 · 0 评论