Go语言中文网 为您找到相关结果 11007

go语言值得学习的开源项目推荐

谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也有大型如nsq、docker等的项目。 下面推荐几款适合学习的项目: 1、cache2go https://github.com/muesli/cache2go 比较简单的一个缓存库,代码量很少,适合新手学习,可以学习到锁、goroutines等。 2、groupcache https://github.com/golang/groupcache 与memcached同一作者,相当于是memcached的go语言实现。 3、nsq https://github.com/bitly/nsq 消息分...阅读全文

博文 2015-03-03 03:00:01 baiyuxiong

golang中defer的使用规则

自个人博客chinazt.cc 在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是return之后添加一个函数调用。因此,defer通常用来释放函数内部变量。 为了更好的学习defer的行为,我们首先来看下面一段代码: func CopyFile(dstName, srcName string) (written int64, err error) { src, err := os.Open(srcName) if err != nil { return } dst, err := os.Create(dstName) if err != nil { return } written, err = io.Cop...阅读全文

博文 2017-07-01 08:00:37 vikings-blog

golang使用sqlite

安装问题 在import sqlite的时候,golang build 出现以下错误, exec: "gcc": executable file not found in %PATH% 原因是sqlitle3是个cgo库,需要gcd编译c代码然后下载安装tdm-gcc即可(windosw版本)下载地址:http://tdm-gcc.tdragon.net/download 在golang中使用sqlite3 ````jspackage main import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3") func main() { db, err := sql.Open("sqlite3", "./foo.db") check...阅读全文

博文 2015-07-22 00:00:00 spnt

golang日期字符串与时间戳转换

坑爹啊 网上搜的到都是坑爹代码 只好自己搞 //获取本地location toBeCharge := "2015-01-01 00:00:00" //待转化为时间戳的字符串 注意 这里的小时和分钟还要秒必须写 因为是跟着模板走的 修改模板的话也可以不写 timeLayout := "2006-01-02 15:04:05" //转化所需模板 loc, _ := time.LoadLocation("Local") //重要:获取时区 theTime, _ := time.ParseInLocation(timeLayout, toBeCharge, loc) //使用模板在对应时区转化为time.time类型 sr := theTime.Unix() //转化为时间戳 类型是int64 fm...阅读全文

博文 2015-06-17 20:23:32 u012210379

无坑安装使用godep(go语言第三方依赖管理)

安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误。 而https://github.com/golang/tools 是 golang.org/x/tools的一个镜像,代码是一样的,所以我是如下安装的。 go get github.com/golang/tools 在GOPATH\src\github.com目录下就有tools文件夹。 在src下和github.com平级新建golang.org文件下,在此文件夹下建x文件夹,然后将tools都复制进去。 然后再执行go get github.com/tools/godep。 此时godep安装在你...阅读全文

博文 2015-01-01 01:00:02 wiselyman

Go http server

package main import ( "io" "net/http" "log" ) // hello world, the web server func HelloServer(w http.ResponseWriter, req *http.Request) { io.WriteString(w, "hello, world!\n") } func main() { http.HandleFunc("/hello", HelloServer) err := http.ListenAndServe(":12345", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } 上面是一个简单的go http服务器端程序。 ...阅读全文

博文 2015-09-22 03:00:01 kuipertan

Golang 逐行读取文件

golang的错误处理有点奇怪. 插入代码时候, 使用插入代码(推荐) 出现错误: 无法解析服务器的 DNS 地址。 使用插入代码, 直接是文本插入, 连着色都没有. 插入图片要地址, 不能上传. 下载客户端, 转到微软的网站时已经是: We can’t find that page. 写个博客都这么难比较失望. package jutil import ( "bufio" "io" "os" "strings" ) func ReadLine(fileName string, handler func(string)) error { f, err := os.Open(fileName) if err != nil { return err } buf := bufio.NewReade...阅读全文

博文 2015-02-24 03:00:00 zoltun

Go语言 time时间格式转换

最近做项目用到golang语言,遇到时间格式相互转换的问题,参考网上资料自己写了代码测试了下,能够成功转换,把代码贴出来以备后用,也供需要者查看。 // time_format.go package main import ( "fmt" "time" ) func main() { fmt.Println("Hello World!") //返回现在时间 tNow := time.Now() //时间转化为string,layout必须为 "2006-01-02 15:04:05" timeNow := tNow.Format("2006-01-02 15:04:05") fmt.Println("tNow(time format...阅读全文

博文 2015-06-17 23:00:50 qq_534019165

GO语言基础入门--类型

类型 本Go语言基础入门内容均来自于《Go语言编程》,个人记录,加深理解。 Go语言内置以下这些基础类型:  布尔类型: bool。  整型: int8、 byte、 int16、 int、 uint、 uintptr等。  浮点类型: float32 、 float64。  复数类型: complex64、 complex128。  字符串: string。  字符类型: rune。  错误类型: error。 此外, Go语言也支持以下这些复合类型:  指针( pointer)  数组( array)  切片( slice)  字典( map)  通道( chan)  结构体( struct)  接口( interface) 在这些基础类型之上Go还封装了下面...阅读全文

博文 2015-04-22 13:00:05 chenqijing2

Golang之继承,多重继承(struct)

热乎的代码来了 package main import "fmt" /* 继承 一个结构体嵌到另一个结构体,称作组合 匿名和组合的区别 如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法,从而实现继承 如果一个struct嵌套了另一个【有名】的结构体,那么这个模式叫做组合 如果一个struct嵌套了多个匿名结构体,那么这个结构可以直接访问多个匿名结构体的方法,从而实现多重继承 */ type Car struct { weight int name string } func (p *Car) Run() { fmt.Println("running") } type Bike struct { Car lunzi int } type Train stru...阅读全文

博文 2018-01-15 07:30:00 pyyu

Go 1.5 发布,完全移除 C,使用 Go 编译 Go

Go 1.5 正式发布,这是 Go 的第六个重要版本。 此版本包括大量重大改进,编译工具链从[ C 转换到 Go](https://golang.org/doc/go1.5#c),从 Go 代码库中完全移除 C 代码。[完完全全重新设计了](https://golang.org/doc/go1.5#gc)垃圾收集器,减少垃圾收集器的停顿时间。改进 scheduler,允许修改默认 [GOMAXPROCS](https://golang.org/pkg/runtime/#GOMAXPROCS) 值(并发执行 goroutines 数量),可以从 1 修改到逻辑 CPUs 的数量。改进 linker,允许分布式 Go 包作为分享库链接到 Go 程序,可以构建 Go 包到归档或者分享库,可以...阅读全文

golang读取ini配置文件

golang读取ini配置文件 一、安装config配置解释包: go get github.com/larspensjo/config 二、载入其包及代码设置 package main import ( "flag" "fmt" "github.com/larspensjo/config" "log" "runtime" ) var ( configFile = flag.String("configfile", "config.ini", "General configuration file") ) //topic list var TOPIC = make(map[string]string) func main() { runtime.GOMAXPROCS(runtime.NumC...阅读全文

博文 2014-10-04 19:26:58 liaojie

完整视频代码及学习资料-Zinx框架-Golang轻量级TCP并发服务-适合基础学习-也适合技能加强

![image.png](https://static.studygolang.com/190412/5eba8cb38cd844bcd8f69e0f1d2bd483.png) ![image.png](https://static.studygolang.com/190412/1105a68f5823cf0801b764ff1bedc2d0.png) ![image.png](https://static.studygolang.com/190412/bb8e5840e39a64197c1a1d9079488e8c.png) ![image.png](https://static.studygolang.com/190412/4edc7fb39cefa5da63b9e739561...阅读全文

GO语言运行cmd命令逐行实时输出执行过程

Golang运行cmd命令逐行实时输出执行过程,注意,不是一次输出所有的内容,而是按照执行的过程,逐行逐行的实时显示出来 代码如下: package main import ( "bufio" "fmt" "io" "os/exec" ) func main() { command := "ls" params := []string{"-l"} //执行cmd命令: ls -l execCommand(command, params) } func execCommand(commandName string, params []string) bool { cmd := exec.Command(commandName, params...) //显示运行的命令 fmt.Println(...阅读全文

博文 2015-06-17 23:07:41 windvix

Mac OS X 安装Golang

1.确保Mac OS X 安装了Git,Hg,在Mac OS X 10.8+下面安装Xcode CommandLine Tools就可以了,10.9以上安装Xcode就包含了Git工具,hg请安装SourceTree,这个Git GUI工具包含了Mercurial工具 2.下载安装go1.3.1.darwin-amd64-osx10.8.pkg 3.安装Sublime Text,一次安装插件,GoSublime,配置GoSublime-Settings-User文件,切记不要改动任何Default文件,例如:GoSublime-Setting-User写入 { "env": { "GOPATH": "$HOME/Documents/GoPATH/", "GOROOT": "/usr/loca...阅读全文

博文 2014-12-04 11:00:01 Vanson

GoLang获取struct的tag

GoLang获取struct的tag内容;beego的ORM中也通过tag来定义参数的。 获取tag的内容是利用反射包来实现的。示例代码能清楚的看懂! 1 package main 2 import ( 3 "fmt" 4 "reflect" // 这里引入reflect模块 5 ) 6 type User struct { 7 Name string "user name" //这引号里面的就是tag 8 Passwd string "user passsword" 9 } 10 func main() { 11 user := &User{"chronos", "pass"} 12 s := reflect.TypeOf(user).Elem() //通过反射获取type定义 13 fo...阅读全文

博文 2015-03-13 03:00:01 chuanheng

go语言 strconv.ParseInt 的例子

golang strconv.ParseInt 是将字符串转换为数字的函数,功能灰常之强大,看的我口水直流.func ParseInt(s string, base int, bitSize int) (i int64, err error)参数1 数字的字符串形式参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制参数3 返回结果的bit大小 也就是int8 int16 int32 int64代码: package main import ( "strconv" ) func main() { i, err := strconv.ParseInt("123", 10, 32) if err != nil { panic(err) } println(i) ...阅读全文

博文 2015-01-22 13:00:01 chuanheng

对Golang interface的理解

理解golang的interface主要在于以下两点: interface是方法的集合 interface是一种类型 简单示例 package main import "fmt" type Animal interface { Speak() string } type Cat struct{} func (c Cat) Speak() string { return "cat" } type Dog struct{} func (d Dog) Speak() string { return "dog" } func Test(params interface{}) { fmt.Println(params) } func main() { animals := []Animal{Cat{}...阅读全文

博文 2017-06-27 13:08:38 GoDev

Go 系列教程 —— 2. Hello World

这是 Golang 系列教程的第 2 个教程。如果想要了解什么是 Golang,以及如何安装 Golang,请阅读 [Golang 教程第 1 部分:介绍与安装](/articles/11706)。 学习一种编程语言的最好方法就是去动手实践,编写代码。让我们开始编写第一个 Go 程序吧。 我个人推荐使用安装了 [Go 扩展](https://marketplace.visualstudio.com/items?itemName=lukehoban.Go)的 [Visual Studio Code](https://code.visualstudio.com/) 作为 IDE。它具有自动补全、编码规范(Code Styling)以及许多其他的特性。 ## 建立 Go 工作区 在编写代码之前,我...阅读全文

博文 2017-11-28 16:28:49 heyulong

IntelliJ IDEA开发golang环境配置

看到一篇文章说IntelliJ IDEA开发作为Go的开发环境不错,突然发神经地想试了一下。 谁知道跟着教程走,到后面越来越不对劲,去百度其它教程,谁知道千篇一律。。。 好了下面开始了 首先把GO安装好。。。(自行安装,附上一篇我之前写的MAC安装GO) 安装IntelliJ IDEA,下载地址: https://www.jetbrains.com/idea/download/。 下载go-lang-idea-plugin这个插件,下载地址: https://plugins.jetbrains.com/plugin/5047。(PS:网上百度的基本都是下源码、编译,搞了一个下午编译,谁知道有已经编译好的可以下载) 下载之后,是一个zip文件,不需要解压,打开IntelliJ IDEA,打开P...阅读全文

博文 2016-02-14 04:00:02 skytoup

在Visual Studio Code中配置GO开发环境

一、GO语言安装 详情查看:GO语言下载、安装、配置 二、GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github.com/microsoft/vscode-go 这款插件的特性包括: 代码着彩色 代码自动完成(使用gocode) 代码片段 快速提示信息(使用godef) 跳转到定义(使用godef) 搜索参考引用(使用go-find-references) 文件大纲(使用go-outline) 重命名(使用gorename) 保存构建(使用go build和go test) 代码格式化(使用goreturns或goimports或gofmt) 调试代码(使用delve) 三、插件安装 3.1 Visual...阅读全文

go的优缺点

1.1 不允许左花括号另起一行1.2 编译器莫名其妙地给行尾加上分号1.3 极度强调编译速度,不惜放弃本应提供的功能1.4 错误处理机制太原始1.5 垃圾回收器(GC)不完善、有重大缺陷1.6 禁止未使用变量和多余import1.7 创建对象的方式太多令人纠结1.8 对象没有构造函数和析构函数1.9 defer语句的语义设定不甚合理1.10 许多语言内置设施不支持用户定义的类型1.11 没有泛型支持,常见数据类型接口丑陋1.12 实现接口不需要明确声明1.13 省掉小括号却省不掉花括号1.14 编译生成的可执行文件尺寸非常大1.15 不支持动态加载类库 Go语言的优点:并发/网络/性能/工具(fmt/pprof/test)/标准库(http/json/log/flags/atomic)/Go...阅读全文

博文 2015-02-14 03:00:01 findumars

一个有关Golang变量作用域的坑

自:http://tonybai.com/2015/01/13/a-hole-about-variable-scope-in-golang/ 临近下班前编写和调试一段Golang代码,但运行结果始终与期望不符,怪异的很,下班前依旧无果。代码Demo如下: //testpointer.go package main import ( "fmt" ) var p *int func foo() (*int, error) { var i int = 5 return &i, nil } func bar() { //use p fmt.Println(*p) } func main() { p, err := foo() if err != nil { fmt.Println(err) retu...阅读全文

博文 2015-06-02 04:00:05 sevenyuan

Go 系列教程 —— 1. 介绍与安装

这是我们 Golang 系列教程的第一个教程。 ## Golang 是什么 Go 亦称为 Golang (译注:按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言。 Golang 的主要关注点是使得高可用性和可扩展性的 Web 应用的开发变得简便容易。(译注:Go 的定位是系统编程语言,只是对 Web 开发支持较好) ## 为何选择 Golang 既然有很多其他编程语言可以做同样的工作,如 Python,Ruby,Nodejs 等,为什么要选择 Golang 作为服务端编程语言? 以下是我使用 Go 语言时发现的一些优点: * 并发是语言的一部分(译注:并非通过标准库实现),所以编写多线程程序会是一件很容易的事。后续教程...阅读全文

博文 2017-11-22 06:18:25 heyulong

Go语言TCP Socket编程

Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的。 网络编程方面,我们最常用的就是tcp socket编程了,在posix标准出来后,socket在各大主流OS平台上都得到了很好的支持。关于tcp programming,最好的资料莫过于W. Richard Stevens 的网络编程圣经《UNIX网络 编程 卷1:套接字联网API》 了,书中...阅读全文

博文 2015-11-18 10:13:26 bigwhite

驳狗屎文 "我为什么放弃Go语言"

驳狗屎文 “我为什么放弃Go语言” 此篇文章流传甚广, 其实里面没啥干货, 而且里面很多观点是有问题的. 这个文章在 golang-china 很早就讨论过了.最近因为 Rust 1.0 和 1.1 的发布, 导致这个文章又出来毒害读者.所以写了这篇反驳文章, 指出其中的问题. 原文链接:http://blog.csdn.net/liigo/article/details/23699459 有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。 开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论。但是我...阅读全文

博文 2015-07-02 12:00:03 chai2010

go语言的urlencode编码使用方式

1,首先我们可以查看godoc.com下的net/url https://godoc.org/net/url 2,我们来看下演示代码 package main import ( "crypto/md5" "flag" "fmt" "net/url" "strings" "time" ) func main() { fmt.Println("./timetoken -t 3600 -key key -url url") var t int64 var key string var resUrl string flag.Int64Var(&t, "t", 0, "expire timestamp") flag.StringVar(&key, "key", "", "encrypt key") f...阅读全文

博文 2016-06-12 19:00:04 guoer9973

PyCharm Golang开发环境搭建(最方便快捷的GO语言开发环境)

IntelliJ太牛了。为了配置Go语言开发环境,折腾了半天,下IDE(Sublime Text,IntelliJ Idea),然后装Go插件。装Go插件还要下载插件项目源码,编译等等,Sublime还要输入python脚本,粘进去通不过,头疼。 突然悟出一个道理,如果你觉得当前手上的事情变得非常痛苦的时候,不是事情本身的问题,是你没找到好的解决方法的问题,或者说,“不是事情太痛苦,是你太笨了”。 在不停的装插件,尝试过程中,突然发现,PyCharm跟Idea一样,也是支持Go插件的,立马悟到,PyCharm可以开发GO,要Idea干毛。再一想,PyCharm和Idea都是IntelliJ的产品,支持应该不会差,于是果断放弃Idea。 在PyCharm(Idea一样)装GO插件,相当容易。 ...阅读全文

博文 2016-05-11 11:00:02 NerdWill

go语言解析html

有两个不错的库: https://github.com/PuerkitoBio/goquery 一个是 http://code.google.com/p/go.net/html html是html的解析器,把html文本解析出来,goquery基于html包,在此基础上结合cascadia 包(一个css选择器工具),实现类似于jquery的功能,操作html非常方便。 使用goquery来查找,选择相应的html节点,但如果要对选择的节点进行修改,删除操作,还需要深入使用html包。 html包把html文本解析为一个树,这个树有很多Node组成,操作的核心就在于对Node的操作。 用几个例子来说明一下吧: doc, err := goquery.NewDocument("http://s...阅读全文

博文 2015-08-06 20:00:07 nop4ss

Go语言中的管道(Channel)总结

管道(Channel)是Go语言中比较重要的部分,经常在Go中的并发中使用。今天尝试对Go语言的管道来做以下总结。总结的形式采用问答式的方法,让答案更有目的性。 Q1.管道是什么? 管道是Go语言在语言级别上提供的goroutine间的**通讯方式**,我们可以使用channel在多个goroutine之间传递消息。channel是**进程内**的通讯方式,是不支持跨进程通信的,如果需要进程间通讯的话,可以使用Socket等网络方式。 以上是管道的概念,下面我们就看下管道的语法。 Q2.管道的语法? 整个Go语言的语法都比较简洁,管道也不例外,其语法如下所示: 在此应当注意,管道是类型相关的,即一个管道只能传递一种类型的值。管道中的数据是先进先出的。 1 // 声明方式,在此ElemType...阅读全文

博文 2015-03-25 14:00:59 yetuweiba

Thrift RPC 使用指南实战(附golang&PHP代码)

Thrift RPC 框架指南 认识Thrift框架 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。 thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器。 thrift允许定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。 类似Thrift的工具,还有Av...阅读全文

博文 2015-05-18 12:00:33 grassroots2011

golang 线程与通道

首先我们来看线程,在golang里面也叫goroutine 在读这篇文章之前,我们需要了解一下并发与并行。golang的线程是一种并发机制,而不是并行。它们之间的区别大家可以上网搜一下,网上有很多的介绍。 下面我们先来看一个例子吧 import( "fmt" ) funcmain(){ go fmt.Println("1") fmt.Println("2") } 在golang里面,使用go这个关键字,后面再跟上一个函数就可以创建一个线程。后面的这个函数可以是已经写好的函数,也可以是一个匿名函数 funcmain(){ vari=3 go func(a int) { fmt.Println(a) fmt.Println("1") }(i) fmt.Println("2") } 上面的代码就创...阅读全文

博文 2015-06-17 20:02:17 niechaoya

GO语言学习(一)--从安装开始

Go语言是Google 2009发布的开源编程语言。 Go语言简洁、高效,专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go是一个快速的静态类型编译语言,但给人感觉就像是一种动态类型的解释语言。 下载安装包 Go语言的安装包在这个地址下载 http://golang.org/dl/ (国内可能需要代理),目前的最新版本是go1.3.1。选择适合自己操作系统的安装包下载。 安装 1. Linux, Mac OS X,和FreeBSD 压缩包安装 下载相应的包文件,然后解压到 /usr/local 目录中,如下: tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz 其中...阅读全文

博文 2014-11-06 20:00:01 imeisa

如果你用Go,不要忘了vet

go tool vet是你的好朋友,不要忽视它。vet是一个优雅的工具,每个Go开发者都要知道并会使用它。它会做代码静态检查发现可能的bug或者可疑的构造。vet是Go tool套件的一部分,我们会在以后的文章中详细描述tool套件。它和go编译器一起发布,这意味着它不需要额外的依赖,可以很方便地通过以下的命令调用:$ go tool vet 本文中所有的go代码段可以正常编译。这使得go vet有价值:它可以在编译阶段和运行阶段发现bug。同时也注意,本文中的大多数代码都是故意写的很难看,不要使用。在go vet和go tool vet之间选择go vet和go tool vet实际上是两个分开的命令。go vet,只在一个单独的包内可用,不能使用flag...阅读全文

博文 2017-03-20 03:07:57 小弧光

Go error--cannot find package

请认真对待你遇到的每一个难题,请用心去思考并找到解决的办法。 在安装每种语言的开发环境时,你总会遇到各种各样的问题,令人搔头挠耳。这不是,当我 用Go语言开发项目,用go build main.go命令进行编译工程时,遇到了一个烦人的问题:cannot find package “github.com/astaxie/beego” in any of:。 描述: 从公司SVN下载Go项目代码,开发环境已经按照要求配置好了。可就当使用“go build main.go”命令时,出现了“cannot find package “github.com/astaxie/beego” in any of:”的错误: 解决方法: 后来仔细看了一下error info,发现GOPATH和我设置的GOPAT...阅读全文

博文 2016-04-08 01:00:12 oceanlucy

Go中结构体的使用

结构体写了一小段代码,居然这么坑,看来前面的基础还是没有打好啊。 开始写的结构体代码是这样的,结果就是出不来,报如下错误: missing type in composite literal 代码如下: package main import ( "encoding/json" "fmt" ) type Person struct { Username string Age int Friend []string Addr string } func TestJson() { p1 := &Person{ "zhangsan", 25, {"lisi", "wangwu"}, "Jinlin China", } p, err := json.Marshal(p1) if err != nil...阅读全文

博文 2015-03-29 23:00:01 lovederh

golang strconv Atoi Itoa 例子

http://www.dotcoo.com/golang-strconv-atoi-itoa golang strconv atoi itoa 在做任何项目的时候都要用到字符串和数字,相互转换是最近基本的操作,哈哈 这里就介绍golang怎么做这些事情 参考代码如下: package main import ( "strconv" ) func main() { i, err := strconv.Atoi("12345") if err != nil { panic(err) } i += 3 println(i) s := strconv.Itoa(12345) s += "3" println(s) ...阅读全文

博文 2014-10-05 20:58:32 DarkWingBoy

golang 内置函数new() 和struct{} 初始化的区别

new() 这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针。 在golang的代码定义如下: func new(t Type) *Type strut{} 直接使用struct{} 来初始化strut时,返回的是一个struct类型的值,而不是指针两者是不一样的 两者对比代码如下: type Student struct{ id int name string } func main(){ var s_1 *Student = new(Student) s_1.id = 100 s_1.name = "cat" var s_2 Student = Student{id:1,name:"tom"} fmt.Println...阅读全文

博文 2015-06-17 20:03:41 happinessaflower

golang的cgo支持调用C++的方法

1)swift,貌似官网的推荐 2)extern "C" 我使用后者,用起来比较爽,上代码 c.h 1 #pragma once 2 3 #ifdef __cplusplus 4 extern "C" { 5 #endif 6 void test(); 7 #ifdef __cplusplus 8 } 9 #endif c.c 1 #include "cplus.hpp" 2 #include "c.h" 3 4 void test() { 5 A *a = new B(); 6 a->test(); 7 } cplus.hpp 1 #pragma once 2 3 class A { 4 public: 5 virtual void test(); 6 }; 7 class B: publ...阅读全文

博文 2015-03-12 03:00:01 sohoer2003

golang将interface{}转换为struct

项目中需要用到golang的队列,container/list,需要放入的元素是struct,但是因为golang中list的设计,从list中取出时的类型为interface{},所以需要想办法把interface{}转换为struct。 这里需要用到interface assertion,具体操作见下面代码: 1 package main 2 3 import ( 4 "container/list" 5 "fmt" 6 "strconv" 7 ) 8 9 type People struct { 10 Name string 11 Age int 12 } 13 14 func main() { 15 // Create a new list and put some numbers ...阅读全文

博文 2017-12-28 19:00:07 lit10050528

无法安装 golang.org/x/tools/的库

安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误。 而https://github.com/golang/tools 是 golang.org/x/tools的一个镜像,代码是一样的,所以我是如下安装的。 go get github.com/golang/tools 在GOPATH\src\github.com目录下就有tools文件夹。 在src下和github.com平级新建golang.org文件下,在此文件夹下建x文件夹,然后将tools都复制进去。 然后再执行go get github.com/tools/godep。 此时godep安装在你...阅读全文

博文 2016-05-20 02:00:01 diegodu

Scala与Golang的并发实现对比

并发语言俨然是应大规模应用架构的需要而提出,有其现实所需。前后了解了Scala和Golang,深深体会到现代并发语言与旧有的Java、C++等语言在风格及理念上的巨大差异。本文主要针对Scala和Golang这两个我喜爱的并发语言在并发特性上的不同实现,做个比较和阐述,以进一步加深理解。 一. Scala与Golang的并发实现思路Scala语言并发设计采用Actor模型,借鉴了Erlang的Actor实现,并且在Scala 2.10之后,Scala采用的是Akka Actor模型库。Actor模型主要特征如下: “一切皆是参与者”,且各个actor间是独立的; 发送者与已发送消息间解耦,这是Actor模型显著特点,据此实现异步通信; actor是封装状态和行为的对象,通过消息交换进行相互通...阅读全文

博文 2015-04-24 01:00:38 2gua

GO语言学习: 项目构建 及编译 初步

一个GO工程中主要包含以下三个目录: src:源代码文件 pkg:包文件 bin:相关bin文件 step1: 建立工程文件夹 goproject step2: 在工程文件夹中建立src,pkg,bin文件夹 step3: 在GOPATH中添加projiect路径 例 e:/goproject step4: 如工程中有自己的包examplepackage,那在src文件夹下建立以包名命名的文件夹 例 examplepackage step5;在src文件架下编写主程序代码代码 goproject.go step6;在examplepackage文件夹中编写 examplepackage.go 和 包测试文件 examplepackage_test.go step7; 编译调试包 go bui...阅读全文

博文 2015-06-04 18:00:00 phlong999

golang之路-api杂记-格式化float输出

golang之路-格式化float输出 代码: a:=strconv.FormatFloat(10.100,'f',-1,32) 输出: 10.1 a := strconv.FormatFloat(10.101, 'f', -1, 64) 输出: 10.101 a := strconv.FormatFloat(10.010, 'f', -1, 64) 输出:10.01 a:=strconv.FormatFloat(10.1,'f',2,64) 输出:10.10 f 参数可以是e,E,g,G-1 代表输出的精度小数点后的位数,如果是<0的值,则返回最少的位数来表示该数,如果是大于0的则返回对应位数的值64 为float的类型,go中float分为32和64位,因此就需要传入32或者6...阅读全文

博文 2014-12-31 01:00:04 stephen830

golang hmac的sha1加密例子

想要用go写btcchina平台的接口,api加密形式在php中是hash_hmac('sha1',$string,$key); go中的一样有hmac包,下面是代码 package main import ( "crypto/hmac" "crypto/sha1" "fmt" "io" ) func main() { //sha1 h := sha1.New() io.WriteString(h, "aaaaaa") fmt.Printf("%x\n", h.Sum(nil)) //hmac ,use sha1 key := []byte("123456") mac := hmac.New(sha1.New, key) mac.Write([]byte("aaaaaa")) fmt.Pri...阅读全文

博文 2015-03-24 10:27:13 舞林

GoBelieve-国内唯一开源IM服务

1. 一小时接入 专注IM,无冗余功能 几行代码,一小时接入 省时省力。2. 自由定制 提供最新源码, 自行二次开发,业务协议 交互视觉均可根据业务需求 自由定制。3. 完全开源 国内唯一开源IM服务,所有源码在Github开放,与线上版本一致4. 私有云部署 彻底排除窃取隐私可能,支持自有域名部署可搭建私有云,无需更新客户端,即可热切换到私有服务,来去自由。5. 官网地址 http://developer.gobelieve.io...阅读全文

博文 2015-06-17 16:00:02 GoBelieve

Golang中用interface{}接收任何参数与强转

函数的传值中,interface{}是可以传任意参数的,就像java的object那样。 下面上我第一次想当然写的 ** 错误 **代码 package main func main() { Any(2) Any("666") } func Any(v interface{}) { v1:=int(v) println(v1) } 我只是想它能通过编译而已,因为上面的错误代码并没有任何的语法错误,心里只有666想说,下面是编译的错误提示: cannot convert v (type interface {}) to type int: need type assertion 正确的代码就可以保证程序不出什么差错。 package main func main() { Any(2) Any(...阅读全文

博文 2017-09-16 13:04:54 送你一碗大麦茶

深入理解GO时间处理(time.Time)

1. 前言时间包括时间值和时区, 没有包含时区信息的时间是不完整的、有歧义的. 和外界传递或解析时间数据时, 应当像HTTP协议或unix-timestamp那样, 使用没有时区歧义的格式, 如果使用某些没有包含时区的非标准的时间表示格式(如yyyy-mm-dd HH:MM:SS), 是有隐患的, 因为解析时会使用场景的默认设置, 如系统时区, 数据库默认时区可能引发事故. 确保服务器系统、数据库、应用程序使用统一的时区, 如果因为一些历史原因, 应用程序各自保持着不同时区, 那么编程时要小心检查代码, 知道时间数据在使用不同时区的程序之间交换时的行为. 第三节会详细解释go程序在不同场景下time.Time的行为. 2. Time的数据结构go1.9之前, time.Time的定义为 ty...阅读全文

博文 2017-12-18 05:57:14 hanjm

Go中的switch fallthrough

switch sExpr { case expr1: some instructions case expr2: some other instructions case expr3: some other instructions default: other code } sExpr和expr1、expr2、expr3的类型必须一致。Go的switch非常灵活,表达式不必是常量或整数,执行的过程从上至下,直到找到匹配项;而如果switch没有表达式,它会匹配true。 Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用f...阅读全文

在Go语言里检测内存泄漏

载于:在Go语言里检测内存泄漏 | DLCoder.com http://dlcoder.com/archives/5648 在影响软件系统稳定性的因素里,我们最担心的一个问题是内存泄漏,随着系统的运行,系统消耗的内存越来越多,直到最后整个操作系统越来越慢,甚至还会导致系统崩溃。在Go语言里,我们检测内存泄漏主要依靠的是go里面的pprof包,除此之外,我们还可以使用浏览器来查看系统的实时内存信息(包括CPU、goroutine等的信息)。主要是用net/http/pprof包在进程里建立一个HTTP服务器,对外输出pprof包的内部性能剖析信息。参见这篇文章。 Go语言的pprof包不仅可以诊断内存堆信息(毕竟,内存泄漏都是在堆里发生的),而且可以诊断CPU信息、goroutine信息、堵...阅读全文

博文 2015-07-23 21:00:00 sryan