请问go标准库里面有没有对一个uint32某几个bit更改或者移位的package?
最近要做一个小工具,对uint32的整数进行逻辑位操作,想请教大家一下,想实现下面的功能,有没有标准库的支持,省得自己再开发了。 (1)对某连续的几个bit进行赋值; (2)循环左移或者右移; (3)左移低位补零,或者右移高位补零。 麻烦各位专家指点一下! 谢谢...阅读全文
最近要做一个小工具,对uint32的整数进行逻辑位操作,想请教大家一下,想实现下面的功能,有没有标准库的支持,省得自己再开发了。 (1)对某连续的几个bit进行赋值; (2)循环左移或者右移; (3)左移低位补零,或者右移高位补零。 麻烦各位专家指点一下! 谢谢...阅读全文
标准库builtin包中builtin.go的make函数原型如下: func make(Type, size IntegerType) Type 在调用make函数时可以传递3个参数 var arr = make([]int,5,10) fmt.Println(arr) 为什么make函数的原型只接收两个参数,调用却能传递3个参...阅读全文
Go圣经-学习笔记入门bufio.Scanner bufio标准库中的Reader和Writer,最好用于文件IO操作,把数据先缓存到内存中,然后再整体做文件IO操作,尽最大可能地减少磁盘IO,但是内存缓冲区的大小要合理设置,默认大小是4096个字节。 bufio.Writer使用 bufio标准库中的Writer提供的方法列表 type Writer struct { err error buf []byte n int wr io.Writer } // 实例化bufio.Writer, 实例化是会直接分配大小为len(w.buf)大小的内存空间,Writer.n表示内存缓冲区已经存放的字节大小 func NewWriter(w io.Writer) *Writer func NewWr...阅读全文
GO Barrier Barrier 用于多个线程完成状态的同步。在linux的系统库中有相关的实现,在 pthread.h 中有函数声明。在golang的标准库中还没有相关的实现。下面利用sync标准库实现个简单的barrier。 实现 ----------$GOPATH/src/barrier/barrier.go----------- package barrier import ( "sync" ) type Barrier struct { curCnt int maxCnt int cond *sync.Cond } func NewBarrier(maxCnt int) *Barrier { mutex := new(sync.Mutex) cond := sync.NewCo...阅读全文
http://www.01happy.com/golang-mysql-demo/ golang本身没有提供连接mysql的驱动,但是定义了标准接口供第三方开发驱动。这里连接mysql可以使用第三方库,第三方库推荐使用https://github.com/Go-SQL-Driver/MySQL这个驱动,更新维护都比较好。https://github.com/go-sql-driver/mysql/blob/master/README.md golang go-sql-drive mysql连接池的实现: http://www.01happy.com/golang-go-sql-drive-mysql-connection-pooling/ database/sql: Stmt的使用以及坑:h...阅读全文
首先这是一篇翻译自TJ 的 Farewell Node.js ,我本人在看完这这篇文章之后确实是受到了一些冲击,但我并不认同作者的某些看法,比如我认为 Node.js 的package register 是其许多优势之一,反而 Go 在这方面却略显匮乏。 由于个人水平所限,在翻译的时候有许多不懂的地方,我也去作者博客、stackoverflow 上问了一些问题,获得了解答。翻译仍有许多不到位的地方,希望能获得指出意见。 PS. 作为一位Node.js 的入门菜鸟,感谢TJ 的付出,一路走好。 正文: 告别Node.js 离开Node.js领域 我一直与Node.js在生产中一起战斗了足够久的时间,很不幸的是,既然我已经不再喜欢从事这份工作,至少在此刻,这是我的正式告别。更重要的是,我需要维护...阅读全文
本文介绍Go 标准库 strings 常用导出函数,结构体及其方法。 import strings 12 import strings strings 包实现了用于操作字符串的简单函数,包括 strings 导出函数和 Reader, Replacer 两个结构体。 1. strings 常用导出函数 判断字符串与子串关系 func EqualFold(s, t string) bool // 判断两个utf-8编码字符串,大小写不敏感 func HasPrefix(s, prefix string) bool // 判断s是否有前缀字符串prefix func Contains(s, substr string) bool // 判断字符串s是否包含子串substr func Contai...阅读全文
###介绍 学习golang就不能不理解goroutine,关于goroutine的科普文章是http://studygolang.com/articles/1855, 这篇教程都第一次看就能看懂,写的非常好,当时以为会goroutine了,但是随着最近半个月的研究发现,如果只看了这篇文章就跟别人吹goroutine就真的贻笑大方了。 ### 我的学习启蒙 我对goroutine的进一步理解是通过这篇 http://morsmachine.dk/netpoller, 因为之前对epoll有些懂(只看过一点点科普文章),所以看这篇文章的时候我没怎么看懂,但是看懂了他说的问题,调用epoll按道理说一般是阻塞的,阻塞的情况下 scheduler 会将 M 拿走,将阻塞的 P 扔给 os...阅读全文
Restful API是目前比较成熟的一套互联网应用程序的API设计理念,Rest是一组架构约束条件和原则,如何Rest约束条件和原则的架构,我们就称为Restful架构,Restful架构具有结构清晰、符合标准、易于理解以及扩展方便等特点,受到越来越多网站的采用! Restful API接口规范包括以下部分: **一、协议** API与用户的通信协议,总是使用HTTPs协议。 **二、域名** 应该尽量将API部署在专用域名之下,如https://api.oldboyedu.com;如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下,如https://oldboyedu.com/api/。 **三、版本** 可以将版本号放在HTTP头信息中,...阅读全文
golang net/http标准库的client是可以配置各种代理的,http/https/sock5等,不过fasthttp仅支持配置sock5代理,通过定义fasthttp dialfunc实现: c := &fasthttp.Client{ Dial: fasthttpproxy.FasthttpSocksDialer("localhost:9050"), } 项目中碰到的问题是,ops只提供了用squid搭建的http代理,所以是想重新定义一个http代理的dialfunc,找了fasthttp github仓库的issue,作者提供了一个dialFunc https://github.com/valyala/fasthttp/issues/363#issuecomment-417...阅读全文
Bowery是一个基于云技术的开发平台,强大的协同处理技术让即使分散各地的团队成员都能无缝地进行工作。在2014年进行的一次由Node.js转到Go的变更中,Bowery获得了不错的性能提升。那么Go有哪些亮点值得开发者关注的呢? 强大的跨平台编程能力 Bowery团队指出Go能很方便地在不同系统里进行程序编译,这是他们转入Go的重要原因之一。 作为开发平台,对Linux,Windows,OSX等常见操作系统提供支援是能否吸引开发者的基本要素。在Go中,开发者可以针对不同操作系统定义不同的文件来实现相同的功能函数。Bowery团队成员Larz在创建Prompt应用(命令行输入)时,就是借助Go而轻松实现了跨平台编译。而开发者要做的,就是设置好不同的环境变量。 快速部署 在Go平台中,从测试环...阅读全文
go标准库(net/url)阅读 url 介绍 问题1: 什么是url?当我们使用搜索引擎搜索东西的,我们第一步先在浏览器的地址栏里输入 google.com, www.google.com, http://www.google.com。我们在地址栏里输入的东西就是URL。URL 又叫统一资源定位符, 用于定位我们要访问的文档或者其他资源。 问题2: URL有什么样的格式?scheme://[userinfo]@[host]:[port]/path?key1=value1&key2=value2#fragment 协议 (http, https, file, ftp) 用户信息, 是可选的 主机名字或者ip地址,定位网络位置 port 服务端口, 一般端口表示提供了某项服务 path 主机上...阅读全文
在Go中首字母大写和小写,决定着这此变量能否被外部调用, 比如:在使用标准库的json编码自定一的结构的时候:
package main import ( "encoding/json" "fmt" ) type T struct { name string Age int } func main() { var info T = T{"fyxichen", 24} fmt.Println("编码前:",info)...阅读全文
/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 今天我们继续讲golang标准库的io库,我们今天就把io库就讲完了,所以就不多说了,让给我们的讲解和代码 [1]type Reader [php] type Reader interface { Read(p []byte) (n int, err error) } [/php] (1)func LimitReader(r Reader, n int64) Reader,我们之前就说了Reader这个结构,其实这就是对Reader的一次封装,限定了它读取字节数,其实他实现的就是io.LimitedReader{}这个结构 [php] import ( "fmt" "io" "os" "ref...阅读全文
在使用Go开发web项目的过程中, 数据库读写操作与JSON格式的输入输出是两块最基础的模块, Go的标准库已经帮我们做了很多, 熟悉database/sql与encoding/json这两个库能帮我们更自在地开发web应用. 但此篇文章抛开基础不说, 只说一些在开发中遇到一些真实存在的痛点. 如何处理Null值?Go的一大特色就是zero value, 比如int类型的zero value是0, string为"", struct为每个field里各自类型的zero value. 因此在Go的很多ORM处理NULL值时, 都是通过zero value机制入库或出库的, 因此, 使用ORM操作的数据库, 如何没有明确指明, 基本上看不到NULL值. 一个可能为NULL的varchar字段, ...阅读全文
谷歌Go语言开发团队今天发布了1.1正式版本。 Go是谷歌于2007年9月启动设计的编程语言,最初定位于web服务、存储系统和数据库的程序设计,同时在语言中包含并发构造体,以帮助开发者创建并行任务。Go将动态语言易于编写的特性和静态语言的高效性相结合,具备良好的易用性和极佳的执行效率。 与1.0版本相比,该版本的主要改进如下: 1. 性能改进 与1.0版本相比,该版本对编译器和链接器、垃圾回收、goroutine(Go语言的并发机制)调度、map实现、部分标准库进行了优化,基于该版本构建的Go代码运行速度将会明显提升。 2. 语言本身的变化 语言本身有一些细微的变化,其中两个需要注意的变化是:放宽了return语句的限制(可以简化现有代码中多余的return语句,使程序更加简洁)、引入了方法...阅读全文
文链接:https://blog.thinkeridea.com/... Go 内置很多种数值类型,往往初学者不知道编写程序如何选择,使用哪种数值类型更有优势。 内置的数值类型有:uint8、 uint16、 uint32、 uint64、 uint、 int8、 int16、 int32、 int64、 int。 从类型名称上可以很好了解到类型的大小,这个非常直观,uint 和 int 这两种类型是不带大小的,那么它们的大小会根据编译参数 GOARCH=amd64 平台决定的。 我最早设计的一个go的项目,当时设计系统使用采用最小类型原则,几乎使用了大多数数值类型,很少使用 uint 和 int 类型,后来遇到很多问题,标准库和三方库函数都接收 int、 uint、 int64、uint6...阅读全文
读前必读,下面所有内容都是来自这里。 放到这里的目的,就是为了比对一下,哪里的读者多。平心而论,同样的Markdown,博客园排版真心X看,怎么瞅怎么X看。(X := '难' || X :='耐' || X := '好' ) 都是原创,不是抄袭。如果真要拿去,也所谓,好歹给我留个名,也不枉费码字之苦。 您说是不是? 话接上节,继续聊。如果你此时此刻看到了“Hello God, My Golang.”,那么检查一下有没有找到一首劲爆的音乐,旁边有没有沏好一杯好茶。 如果有,就关掉音乐喝掉茶吧。 写代码是需要一心一意的,耳朵旁边有音乐,那你到底是留着心听音乐呢?还是留着心想逻辑呢? 所以,最好停掉音乐专心致志。 如果不停掉... 那就别停了。 写代码心情最重要,无论怎样,高兴就好。 只要嗨起来,...阅读全文
之前说过golang调用C代码的方式可以通过cgo或者是swig,而cgo是不能使用C++相关的东西的,比如标准库或者C++的面向对象特性。怎么办,将c++的功能函数封装成C接口,然后编译成动态库,或者是功能较为简单的可以直接嵌入到go源文件中。 cgo的使用是在linux平台上,在windows平台上可以配置交叉编译器。 动态库头文件:myfuns.h #pragma once #include
以下所有观点都是个人愚见,有不同建议或补充的的欢迎emial, aboutme 原文章地址 pprof的简介 pprof是golang标准库里面的其中一个库,它通过其HTTP服务器得到运行时的分析数据,从而给pprof可视化工具提供数据分析来源。它可以用来分析性能消耗,分析内存泄漏,死锁等。 具体使用可以了解官方包pprof,那我如何在http中使用pprof?如何在已有http或者https服务上使用pprof呢? 这些答案在标准库找不到,随在此记录一下。 如何启动pprof 在官方包中已经给出了例子: package main import "net/http" import _ "net/http/pprof" // 初始化pprof func main() { // do somet...阅读全文
序言 看过很多方面的编码规范,可能每一家公司都有不同的规范,这份编码规范是写给我自己的,同时希望我们公司内部同事也能遵循这个规范来写Go代码。 如果你的代码没有办法找到下面的规范,那么就遵循标准库的规范,多阅读标准库的源码,标准库的代码可以说是我们写代码参考的标杆。 格式化规范 go默认已经有了gofmt工具,但是我们强烈建议使用goimport工具,这个在gofmt的基础上增加了自动删除和引入包. go get golang.org/x/tools/cmd/goimports 不同的编辑器有不同的配置, sublime的配置教程:http://michaelwhatcott.com/gosublime-goimports/ LiteIDE默认已经支持了goimports,如果你的不支持请点...阅读全文
Golang计算MD5 1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密。这些学术 解释都不用管它,反正就是一群数学家老爷爷通过各种证明得到的一种方法,用这种方法加密 过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。既然加密者自己 都无法解密,那这乖僻的加密算法有个毛用阿?哪些场景需要这种有去无回的加密方式呢? 这里先了解下单向加密的特征: 首先,不可解密性在上面已经提到了,目的就是掩藏明文。其次单向加密算法的另外两个特征 使得它更接地气,第一是任意两段明文数据,加密以后的密文不能是相同的; 第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。这样当我们需要表征一段 唯一的内容,但是有不想别人知道该段内容时或者仅仅是为一个内容...阅读全文
哎,先发下牢骚,Go文档还是太弱了,特别是标准库中的文档说明,很多函数几乎就一句话过了。这点确实该向Microsoft的MSDN好好学学。 Go的time包是标准库中的包之一 不用说,几乎是开发必须用到的包之一。time包的说明文档在: http://golang.org/pkg/time/ 先注意下Overview中的一句话: The calendrical calculations always assume a Gregorian calendar. 这个包的时间计算式是基于格里历,就是我们使用的公历。关于格里历的历史,可以看百度百科: http://baike.baidu.com/view/391054.htm 看看godoc文档,最大的数据类型就是Time了,这个Time类型最微小...阅读全文
历史 ECMAScript标准建立在一些原本的技术上,最为著名是Javascript和JScript,而在第一版本到第二版本则是变更了编辑性质,在第三版引入了强大的正则表达式,更加的字符串处理,新的控制语句,try/carth异常处理,更严谨的错误定义,格式化的数字输出以及一些为国际化和未来语言成长预留的小的变更,第四版本因为某些原因流产,第五版本纸面化了很多事实已经在浏览器上形成的共识的语言规范解析并且增加了对自第三版发布以来的新功能的支持,包括访问器属性,反射创建以及对象检测,属性特效的程序控制,新增的数组操作函数,JSON对象编码格式,以及提供了改进的错误检查以及程序安全性的严格模式。 范围 ECMAScript标准定义了ECMAScript脚本语言的范围 一致性 符合标准的ECMAS...阅读全文
我在2011年就听说了Go并学习了一段时间,坦白的说,那时候对Go是比较无感的,因为并没有看到Go特别亮眼的地方,可能和我使用C、Erlang、Java有关,这三种语言可以写高性能、高并发、高可用的服务;包含了面向过程、面向并发、面向对象的思想,我觉得我并不需要再学习Go,何况那个时候好像也没宣传的那么优秀。 一切都发生在418天前,因为工作的需要,我开始写Go了,本来预期是一段压抑、蛋疼的旅程(被迫使用其它语言的同学可能都会有此感受),结果收获了非一般的惊喜、非一般的效率、非一般的开发体验。 先用几个词来总结一下我的感受:简洁、标准、组合、创造力、生产力! 特别是生产力,由于Go优秀的标准库、完美的代码安全、全面的三方库、完善的测试机制、完善的标准管理工具,使用Go给我们小组带来了极大的生...阅读全文
使用Go标准库database/sql,Rows.Scan如果遇到NULL,则会报错,并且停止Scan后续的字段,导致获得的数据不完整。 比如: ``` type TblUser struct { Id int64 LastIp string NickName string Avatar string Lang string } ``` 假设LastIp为NULL,其他字段都有数据,但是Rows.Scan的时候,只能识别出Id,其他字段都无法正确读出。 而NULL在数据库又很容易遇到,摸索了一段时间,找到一个方案,先上代码: ``` m := new(TblUser) dest := []interface{}{&(m.Id), &(m.LastIp), &(m.NickName), &(m...阅读全文
跟着“码术”一起学习Golang语言。今天讲解Golang语言的基本类型,介绍布尔类型和数值类型。 学习Golang语言(1): Hello World 学习Golang语言(2): 变量 学习Golang语言(3):类型--布尔型和数值类型 学习Golang语言(4):类型--字符串 学习Golang语言(5):类型--数组 布尔类型 布尔类型是 bool。Go语言提供了内置的布尔值true和flase。Go语言支持标准的逻辑和比较操作。这些操作的结果都是布尔值。 布尔值和表达式可以用于if语句中,for语句的条件中以及switch语句的case的判断中。 逻辑操作符: !:逻辑非操作符; ||:逻辑或操作符; &&:逻辑与操作符 比较操作符。 <,>, ==,!=, <=, >= 数值类...阅读全文
26.蛤蟆笔记go语言——beedb库使用 beedb是一个Go进行ORM操作的库,它采用了Go style方式对数据库进行操作,实现了struct到数据表记录的映射。是一个十分轻量级的Go ORM框架,本意降低复杂的ORM学习曲线,尽可能在ORM的运行效率和功能之间寻求一个平衡. 安装 支持go get方式安装,是完全按照Go Style的方式来实现的。 命令行执行:go get github.com/astaxie/beedb 需要import相应的数据库驱动包、database/sql标准接口包以及beedb包 import ( "database/sql" "github.com/astaxie/beedb" _"github.com/ziutek/mymysql/godrv" ) ...阅读全文
文:http://blog.golang.org/2012/03/go-version-1-is-released.html —————-翻译分隔线—————- Go 版本 1 发布 今天,在 Go 编程语言的开发上标记了一个主要的里程碑。我们宣布 Go 版本 1,或者简称为 Go 1,定义了一个语言和一系列的核心库作为基础,用于创建可信赖的产品、项目和出版物。 Go 1 是 Go 的第一个发布,提供了二进制包。可用于 Linux、FreeBSD、Mac OS X 以及,令人非常兴奋的——Windows。 对于用户来说 Go 1 驾驭起来相当稳定。编写 Go 1 程序的人可以完全确信在大多数环境下,即使再过若干年,仍然无需对程序做任何修改,它还能编译和运行。类似的,编写关于 Go 1 书籍的...阅读全文
2013-12-08 wcdj go语言通过使用标准库里的flag包来处理命令行参数。 Package flag implements command-line flag parsing. http://golang.org/pkg/flag/ http://golang.org/pkg/ 几点注意事项: 1,通过flag.String(), Bool(), Int()等方式来定义命令行中需要使用的flag。 2,在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。 3,命令行参数的格式可以是: -flag xxx (使用空格,一个 - 符号) --flag xxx (使用空格,两个 - 符号) -flag=xxx (使用等号,一个 - 符号) --flag=xxx...阅读全文
序言 Golang标准库的http部分提供了强大的web应用支持,再加上negroni等中间件框架的支持,可以开发高性能的web应用(如提供Restful的api服务等)。 通常这些web应用部署在多台Linux操作系统的应用服务器上,并用Nginx等做为反向代理,实现高可用的集群服务。当应用版本升级时,如何实现比较优雅的多态服务器的版本更新呢? 问题分析 Web应用的更新,我觉得可能需要考虑几个方面的问题: 编译好的应用二进制文件、配置文件上传到服务器上; 应用服务器能感知到有新的版本上传; 在没有停止服务的情况下,热更新版本; 最好所有的更新过程,可以脚本化,减少手动操作的错误。 方案 其实,go社区有一些开源项目,可以自动检测web应用的改变,并实现自动的更新,但这些应用都是检测源码、...阅读全文
最近在项目中需要根据磁盘使用情况来做一下处理,发现没有什么标准库可以获取磁盘当前使用情况,在网上找了一段代码在 Linux 下运行可以,但在 Windows 跑会抛异常。 后来在网上找到了这篇文章,文章分别给出了两个平台各自获取磁盘使用情况的方法,在此基础上使用golang 的条件编译就可以实现跨平台获取了。 解决这个问题花了大半天,现在项目快结束了有时间就传到 gitlab 上了方便以后使用。 使用示例 获取包 go get gitlab.com/tingshuo/go-diskstate/ 使用 import "gitlab.com/tingshuo/go-diskstate/diskstate" import "fmt" // example func main() { state :...阅读全文
接口定义-基本接口 //----------------------------------------------------------------------------- //===================================基本接口=================================== //----------------------------------------------------------------------------- // Reader 接口用来输出自己的字节数据。只有一个鸭子方法Read。 // 参数p:将对象的数据流读入到 p 中,p是调用方准备用来盛放数据的[]byte。 // 返回值: // 1 如果已读到了数据...阅读全文
## 初衷 很多初学者刷完语法之后,就急于上手框架,beego gin echo等。个人不是很建议这样的做法。go的标准库是很重要的,也是很可靠的。因为标准库是google也在用的。如果你想go语言更进步你必须要了解熟悉标准。所以有了这个项目。帮助大家了解go是如何构建web的。通过项目去摸索go底层的实现对你大有帮助的。 ## 教程 后续会写一些相关的文章教程,发布在 站长@polaris 创建的星球上,我很推荐大家参加这个星球。大量的干货和大佬的分享。 ## 结构 该项目是基于标准的mvc结构。也可以了解下项目的结构。 ## 项目预览 ,还包括常见的 Socket、WebSocket 和 SPDY 等等,但 HTTP 是当下最简单和最常见的交互形式。与其它语言所不同的是,Go 语言的标准库自带了一系列结构和方法来帮助开发者简化 HTTP 服务开发的相关流程。因此,我们不需要依赖任何第三方组件就能构建并启动一个高并发的 HTTP 服务器。 ## Hello world! 第一步,就让我们使用 Go 语言来搭建一个 HTTP 版的 ”Hello world“ 程序吧! 我们先创建一个名为 `htt...阅读全文
Go 在近 10 年间已经快速的成为了非常流行并且成功的系统编程语言。  > Go 带来的是 Gotham (译者注:哥谭,是蝙蝠侠的家乡,充满犯罪的黑暗城市,大意就是乱世出枭雄,Go 正是这样是个超级英雄而存在) ,它将分布式系统从黑暗中摆脱出来。 插画归功于 [Ashley McNamara](https://twitter.com/ashleymcnamara?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor) 和 [Renee ...阅读全文
本文转自老男孩教育,转载请注明出处:http://www.oldboyedu.com 如果你曾经编写亦或只是使用Python语言,那么你可能已经习惯了看Python源码文件; 源码的文件名以.py结尾。或许你也已经注意到了另一种类型的文件,文件名以.pyc结尾,或许你已经听说过它们就是Python的“字节码”文件。(但在Python 3上却难觅其踪 -- 原因是它们不再与.py文件出现在同一个目录中,而是放在一个名为__pycache__的子目录中了)。或许你也已听说过这是一种程序加速机制。通过防止Python每次运行时都重新解析源代码从而加快程序运行。 **Python中如何使用python字节码工作?** Python经常被称为是一种解释型语言 -- 一种源代码在程序运...阅读全文
建网站不可避免的要使用各种各样的静态资源,这一节,就来看看,如何加载css,js图片等等这些资源。 在之前的基础上构造一简单的个HTML的测试文件
this is header
this is main
{{.Name | showname}}
为什么选择使用Go语言 国内很多云创业公司都会选择把Go作为首要语言,例如DaoCloud。为什么会选择Go呢?与其他语言的应用相比,它有什么优点呢? 1、学习曲线 它包含了类C语法、GC内置和工程工具。这一点非常重要,因为Go语言容易学习,所以一个普通的大学生花一个星期就能写出来可以上手的、高性能的应用。在国内大家都追求快,这也是为什么国内Go流行的原因之一。 2、效率 Go拥有接近C的运行效率和接近PHP的开发效率,这就很有利的支撑了上面大家追求快速的需求。 3、出身名门、血统纯正 之所以说Go出身名门,是因为我们知道Go语言出自Google公司,这个公司在业界的知名度和实力自然不用多说。Google公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。...阅读全文
目前在用go实现form表单上传文件的功能,我只找到了把数据读取到内存,拼接为form表单,然后上传的标准库。在文件比较大的情况下,内存会出现不够用的情况,想知道怎么解决。http client标准库能自定义发送body数据吗,需要实现client的RoundTrip吧,大概看了默认实现,感觉好复杂?或者有好用的第三方包? 目前实现的form表单方式为一下带代码。 函数和os.IsNotExists(),他们的函数的原形是func IsExist(err error) bool func IsNotExist(err error) bool 都是传入一个err返回bool 这里注意了 err已经定义好了 [php] /* var ( ErrInvalid = errors.New("invalid argumen...阅读全文
13年上半年接触了Golang,对Golang十分喜爱。现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的。一直有想法写点Golang相关的总结或者感想,决定还是在年前总结下吧。注明下:我只是Golang的喜好者,不是脑残粉,也无意去挑起什么语言之争。 特性少,语法简单。GO是崇尚极简主义的,提倡少即是多。这点在它的Spec上尤其凸显,一下午的时间绝对可以看完。GO的特性很少,很多GO的使用者都反馈,GO的关键字至少完全可以记在大脑里。同时它的语法极为简单,而且语义清晰。 部署方便。GO是一个强类型静态语言,可以把代码编译为本地机器指令。它的RUNTIME是会在编译时一起链接到执行文件中,这也就意味着我们...阅读全文
多年C、C++开发者,刚学GO 二天,目前对着GO语言圣经练习。 https://docs.ruanjiadeng.com/gopl-zh/ch1/ch1-03.html 发现示例程序dup3和dup2的执行结果不一致, 当输入的文件最后一行不是一个换行时。 gopl.io/ch1/dup3 ```go package main import ( "fmt" "io/ioutil" "os" "strings" ) func main() { counts := make(map[string]int) for _, filename := range os.Args[1:] { da...阅读全文
13年上半年接触了Golang,对Golang十分喜爱。现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的。一直有想法写点Golang相关的总结或者感想,决定还是在年前总结下吧。注明下:我只是Golang的喜好者,不是脑残粉,也无意去挑起什么语言之争。 特性少,语法简单。GO是崇尚极简主义的,提倡少即是多。这点在它的Spec上尤其凸显,一下午的时间绝对可以看完。GO的特性很少,很多GO的使用者都反馈,GO的关键字至少完全可以记在大脑里。同时它的语法极为简单,而且语义清晰。 部署方便。GO是一个强类型静态语言,可以把代码编译为本地机器指令。它的RUNTIME是会在编译时一起链接到执行文件中,这也就意味着我们...阅读全文
摘要: 阿里云宣布推出Serverless Kubernetes服务,容器服务新增Serverless形态。 5月2日,阿里云宣布推出Serverless Kubernetes服务,容器服务新增Serverless形态。开发者可在5秒内创建集群、30秒部署应用上线。用户无需管理集群基础设施,还可根据应用实际消耗资源按量付费,此举意在进一步降低容器技术的使用门槛,简化容器平台运维的复杂度。该服务即日起开启公测。 阿里云是国内最大规模的容器公共云平台,为数千多家企业提供容器平台。新推出的Serverless Kubernetes负责容器应用的无服务器化运行,具备简单易用、按需付费、兼容并包、安全隔离、按需扩容、互联互通等优势,与Kubernetes生态兼容,可与用户现有应用环境完全融合。...阅读全文
瑞安·麦丘 2017 年 12 月 9 日 Go 是一门相当新的语言,并且在最近几年得到了越来越多的关注。它的功能非常强大,而且拥有出色的工具来设计快速高效的 API 接口。虽然已经有很多库可以创建一个 API 接口,像 [Go Buffalo](https://gobuffalo.io/) 和 [Goa](https://goa.design/) 之类;但是,如果能够做到除了数据库和缓存连接器之外,仅仅使用标准库来创建,无疑将非常有趣。 在这篇博客中,我将分析如何使用 Go 语言标准库来创建一个端点(Endpoint)。整个 API(包括多个端点(Endpoint))代码在我的 GitHub [golang-standard-lib-rest-api](https://github.com...阅读全文
前提 1、docker 空镜像(或类似环境) 2、Go 应用中 使用了 loc, _ := time.LoadLocation("Asia/Chongqing") 问题 $ go run ./xxx panic: time:missing Location in call to Time.In 原因 时间的位置信息是从本地文件系统中提取的,大多数系统都支持它,但还是取决于当前系统。具体的配置存储路径: $ cd /usr/share/zoneinfo 进入该目录就可以看到各时区的配置信息 $ ls +VERSION Australia EET Factory Greenwich Jamaica Mexico Poland US posixrules Africa Brazil EST GB ...阅读全文
Go语言已经7岁了!今年8月,Go 1.7如期发布。撰写本稿时,Go 1.8的测试版也出来了。我们正在热切盼望着明年2月的Go 1.8正式版。 如果你关注 TIOBE的编程语言排行榜 就会发现,截止到2016年11月,Go语言从原先的第50多位经过多次上窜已经跃到了第13位,跻入绝对主流的编程语言的行列!这份排行榜每月都会更新,并基于互联网上的程序员老鸟、教学课程和相关厂商的数量进行排名。在国内,从我这几年运营Go语言北京用户组的经历来看,可以明显地感觉到Go语言的在国内的大热。N多初创互联网企业都选用Go语言作为他们的基础技术栈。我还发现,已经有在大数据、机器人等尖端科技领域耕耘的国内公司开始使用Go语言。这门语言现在已经是无孔不入了。 1. 回顾 遥想去年的1.5版本,Go运行时系统和标...阅读全文
我有一个习惯,那就是随时记录下编程过程中遇到的问题(包括问题现场、问题起因以及对问题的分析),并喜欢阶段性的对一段时间内的编码过程的得与失进行回顾和总结。内容可以包括:对编程语法的新认知、遇坑填坑的经历、一些让自己豁然开朗的小tip/小实践等。记录和总结的多了,感觉有价值的,就成文发在博客上的;一些小的点,或是还没有想清楚的事情,或思路没法结构化统一的,就放在资料库里备用。“写Go代码时遇到的那些问题”这个系列也是基于这个思路做的。 在这一篇中,我把“所遇到的问题”划分为三类:语言类、库与工具类、实践类,这样应该更便于大家分类阅读和理解。另外借这篇文章,我们先来看一下Go语言当前的State,资料来自于twitter、reddit、golang-dev forum、github上golang...阅读全文
1、golang中expvar包是什么? 2、expvar包的作用是什么? 3、expvar包有哪些内容?怎么使用? 今天学习到expvar,第一次接触这个包,包名和相关知识眼生,看了半天云里雾里的。 一、golang中expvar包是什么? expvar包提供了公共变量的标准接口,如服务的操作计数器。本包通过HTTP在/debug/vars位置以JSON格式导出了这些变量。 为了增加HTTP处理器,本包注册了如下变量: cmdline os.Args memstats runtime.Memstats 这个包可以辅助调试全局变量。支持一些常见的类型:float64、int64、map、string。 二、expvar包的作用是什么? 1、它支持对变量的基本操作、修改、查询这些。 2、整形类...阅读全文