
Go语言
文章平均质量分 73
Go语言
zzhongcy
因为站在了巨人的肩上,所以我看得更远。
当你发现自己的才华撑不起野心时,就请安静下来学习吧
展开
-
[译]Go文件操作大全
目录 [−]介绍万物皆文件基本操作创建空文件Truncate文件得到文件信息重命名和移动删除文件打开和关闭文件检查文件是否存在检查读写权限改变权限、拥有者、时间戳硬链接和软链接读写复制文件跳转到文件指定位置(Seek)写文件快写文件使用缓存写读取最多N个字节读取正好N个字转载 2017-04-05 15:38:46 · 500 阅读 · 0 评论 -
Go几个大小开源应用
0. Linux 容器引擎 DockerDocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。1.转载 2017-04-05 16:52:43 · 3043 阅读 · 0 评论 -
go语言匿名函数的用法
1.go语言匿名函数的用法1-声明一个匿名函数 func(参数列表) 返回值列表 { 函数体... }2-匿名函数的调用 package mainimport ( "fmt")func main() { //无参数直接加括号 func() int { var转载 2017-05-05 14:09:17 · 2749 阅读 · 0 评论 -
golang 开源项目全集
一直更新中,地址:https://github.com/golang/go/wiki/Projects#zeromqIndexes and search enginesThese sites provide indexes and search engines for Go packages:awesome-go - A community curated list of转载 2017-06-22 09:19:00 · 20594 阅读 · 0 评论 -
在Go语言中使用JSON
Encode将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error:func Marshal(v interface{}) ([]byte, error)Marshal函数将会递归遍历整个对象,依次按成员类型对这个对象进行编码,类型转换规则如下:bool类型转换为JSON的Boolean整数,浮点数等数值类型 转换为JSO转载 2017-06-22 11:03:46 · 661 阅读 · 0 评论 -
Go语言 常用数据类型底层结构分析
虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的。它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struct来实现。了解golang的数据类型和数据结构的底层实现,将有助于我们更好的理解golang并写出质量更好的代码。基础类型源码在:$GOROOT/src/pkg/runtime/r转载 2017-08-09 15:44:32 · 757 阅读 · 0 评论 -
Go语言 Go1.1新调度器详解
原创翻译文章,转载请注明出处:服务器非业余研究-sunface 简介 Go1.1更新中最重要的特性之一就是由Dmitry Vyukov开发的全新的调度器。新的调度器能极大的提高Go并行程序的性能并且不需要对程序进行修改,因此我认为应该写一篇文章为大家介绍下新版的调度器特性。 这篇文章所写的绝大部分内容都可以在original design doc转载 2017-08-09 15:56:26 · 581 阅读 · 0 评论 -
Go语言中struct的匿名属性特征
我们上面介绍了如何定义一个struct,定义的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段。当匿名字段是一个struct的时候,那么这个struct所拥有的全部字段都被隐式地引入了当前定义的这个struct。让我们来看一个例子,让上面说的这些更具体化:package mainimport "fmt"ty转载 2017-08-14 09:33:06 · 2259 阅读 · 0 评论 -
Go语言 --- slice切片
Go语言学习笔记 --- slice切片slice切片其本身并不是数组,它指向底层的数组作为变长数组的替代方案,可以关联底层数组的局部或全部类型为引用类型可以直接创建或从底层数组获取生成使用len() 获取元素个数, cap() 获取容量一般使用make() 创建如果多个slice指向相同底层数组,其中一个的值改变会影响全部make([]T,len,ca转载 2017-11-14 14:00:51 · 531 阅读 · 0 评论 -
Go语言的三个雷区
下面的例子都是在Kubernetes代码中的,而且据我所知,都不止一次地通过了代码审查。1. 循环中变量的作用域问题观察下面的代码,预测其功能是什么?func print(pi *int) { fmt.Println(*pi) }for i := 0; i < 10; i++ { defer fmt.Println(i) defer func(){ fmt.Prin转载 2017-04-05 15:28:08 · 530 阅读 · 0 评论 -
go语言的官方包sync.Pool
已经使用golang有一段时间,go的协程和gc垃圾回收特性的确会提高程序的开发效率。但是毕竟是一门新语言,如果对于它的机制不了解,用起来可能会蹦出各种潘多拉盒子。今天就讲讲我在项目中用到的sync包的Pool类的使用,以免大家混淆使用。众所周知,go是自动垃圾回收的(garbage collector),这大大减少了程序编程负担。但gc是一把双刃剑,带来了编程的方便但同时也增加了运行时开转载 2017-03-30 10:38:20 · 1089 阅读 · 0 评论 -
Go语言 常用数据类型底层结构分析
虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的。它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struct来实现。了解golang的数据类型和数据结构的底层实现,将有助于我们更好的理解golang并写出质量更好的代码。基础类型源码在:$GOROOT/src/pkg/runtime/r转载 2017-02-06 15:23:45 · 960 阅读 · 0 评论 -
GO语言异常处理机制panic和recover分析
本文实例讲述了GO语言延迟函数defer用法。分享给大家供大家参考。具体分析如下:defer 在声明时不会立即执行,而是在函数 return 后,再按照 FILO (先进后出)的原则依次执行每一个 defer.defer一般用于异常处理、释放资源、清理数据、记录日志等。这有点像面向对象语言的析构函数,优雅又简洁,是 Golang 的亮点之一。代码1:了解 defer 的执行转载 2015-12-30 17:40:48 · 2305 阅读 · 0 评论 -
go中的main函数和init函数
Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。 Go程序会自动调用init()和转载 2015-12-24 15:39:09 · 1414 阅读 · 0 评论 -
go lang中的import
import我们在写Go代码的时候经常用到import这个命令用来导入包文件,而我们经常看到的方式参考如下:import( "fmt")然后我们代码里面可以通过如下的方式调用fmt.Println("hello world")上面这个fmt是Go语言的标准库,其实是去GOROOT环境变量指定目录下去加载该模块,当然G转载 2015-12-24 15:42:40 · 742 阅读 · 0 评论 -
go 切片:用法和本质
原文: http://golang.org/doc/articles/slices_usage_and_internals.html中文: http://zh-golang.appsp0t.com/doc/articles/slices_usage_and_internals.htmlGo的切片类型为处理同类型数据序列提供一个方便而高效的方式。切片有些类似于其他语言中的数组,但是有一些不同转载 2015-12-24 16:21:53 · 1173 阅读 · 0 评论 -
Golang Channel用法简编
转自:http://tonybai.com/2014/09/29/a-channel-compendium-for-golang/在进入正式内容前,我这里先顺便转发一则消息,那就是Golang 1.3.2已经正式发布了。国内的golangtc已经镜像了golang.org的安装包下载页面,国内go程序员与爱好者们可以到"Golang中 国",即golangtc.com去下载转载 2016-01-28 16:11:30 · 1157 阅读 · 0 评论 -
Go 根据字符串调用指定函数
随学随记,留备查1、初学web设计,暂不想使用第三方库;于是乎HandleFunc()写的满屏都是……就想着模拟MVC思想,根据URL的路径自动调用指定的控制器方法,岂不是很好;2、尝试使用Go的反射功能,初步实现了原理算法;3、需要引入“reflect”包,使用reflect.ValueOf()方法,这里必须传入参数地址,否则其返回的reflect.Value类型只能查询到静态声明的转载 2016-10-18 16:29:31 · 2623 阅读 · 0 评论 -
Golang 1.4 net/rpc server源码解析
上一篇文章我们讲了net/rpc中client部分的实现,我本机源码安装路径在/usr/local/go,这net/rpc(golang 1.4版本)涉及到的相关代码主要有:server.go方法注册:因为从client我们知道是复用的socket来实现并发调用rpc方法,我们先从方法注册来看源码部分:// Server对象大都是保存方法存根,保证对象互斥的typ转载 2016-10-18 16:33:52 · 1616 阅读 · 0 评论 -
beego框架——快速开发go应用的http框架
文章来源:http://studygolang.com/articles/5300http://beego.me/https://github.com/astaxie/beegobeego是一个快速开发Go应用的http框架,作者是SegmentFault 用户,go 语言方面技术大牛@Asta谢。beego可以用来快速开发API、Web、后端服务等各种应用转载 2016-11-17 10:21:32 · 7678 阅读 · 0 评论 -
有限状态机FSM
有限状态机又简称FSM(Finite-State Machine的首字母缩写)。这个在离散数学里学过了,它是计算机领域中被广泛使用的数学概念。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。编译原理学得好的童鞋应该对FSM不陌生,因为编译器就用了FMS来做词法扫描时的状态转移。FSM的概念在网上一搜可以搜一大堆出来,但估计您也看不大明白。本文将以不一样的方式来讲述FSM的概转载 2016-11-18 09:34:49 · 5967 阅读 · 0 评论 -
unsafe 包
------------------------------------------------------------指针类型:*类型:普通指针,用于传递对象地址,不能进行指针运算。unsafe.Pointer:通用指针类型,用于转换不同类型的指针,不能进行指针运算。uintptr:用于指针运算,GC 不把 uintptr 当指针,uintptr 无法持有对象。u转载 2017-02-06 15:01:36 · 921 阅读 · 0 评论 -
golang: 详解interface和nil
golang的nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。nil是预先说明的标识符,也即通常意义上的关键字。在golang中,nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果未遵循这个规则,则会引发panic。对此官方有明确的说明:http://pkg.golang.org/pkg/builtin/#T转载 2017-02-06 15:07:31 · 4059 阅读 · 2 评论 -
Go语言 有限状态机FSM
有限状态机又简称FSM(Finite-State Machine的首字母缩写)。这个在离散数学里学过了,它是计算机领域中被广泛使用的数学概念。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。编译原理学得好的童鞋应该对FSM不陌生,因为编译器就用了FMS来做词法扫描时的状态转移。FSM的概念在网上一搜可以搜一大堆出来,但估计您也看不大明白。本文将以不一样的方式来讲述FSM的概转载 2017-02-06 15:14:11 · 749 阅读 · 0 评论 -
go使用Defer的几个场景
Go 语言中的 defer 语句是 UNIX 之父 Ken Thompson 大神发明的, 是完全正交的设计.也正因为 Go 语言遵循的是正交的设计, 所以才有了: “少是指数级的多/Less is exponentially more” 的说法. 因为是正交的设计, 最终得到的组合形式是指数级的组合形式.相反, C++的特性虽然很多, 但是很多不是正交的设计, 而只是简单转载 2015-12-24 16:52:20 · 3183 阅读 · 0 评论