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

模拟浏览器登录操作

近来想用Go做一点事,以减轻工作上的负担。 我的工作中有几项工作是每日重复的,大致内容: 1、将数据收集到Excel中。 2、收集齐后,将Excel中的部分数据提交到办公系统中(网页上操作)。 3、再将提交过后的审批号码提取出来,存入Excel中。 我现在有两个问题: 1、现在,上面的第一步Excel操作,Go中不知有何现成的库,若没有,我有个效率不高的办法。这个问题倒还不算急。 2、第二个问题比较着急。向办公系统提交数据,得先登录。我的操作步骤如下: 2.1、先访问办公系统首页,获取Session的Cookie。 2.2、进行登录数据提交,将刚才获取的这个Session的Cookie一并提交上去。 2.3、进行业务数据提交。 我现在的...阅读全文

Golang简单写文件操作的四种方法

载别人的代码 http://www.android100.org/html/201407/28/47230.html package mainimport ( "bufio" //缓存IO "fmt" "io/ioutil" //io 工具包 "io" "os" )func check(e error) { if e != nil { panic(e) } }/** * 判断文件是否存在 存在返回 true 不存在返回false */ func checkFileIsExist(filename string) (bool) { var exist = true; if _, err := os.Stat(filename); os.IsNotExist(err) { exist = fal...阅读全文

博文 2014-12-18 18:00:01 bluezwt

Go时间戳和日期字符串的相互转换

Go语言中,获取时间戳用time.Now().Unix(),格式化时间用t.Format,解析时间用time.Parse。 看实例代码: package main import ( "fmt" "time" ) func main() { //获取时间戳 timestamp := time.Now().Unix() fmt.Println(timestamp) //格式化为字符串,tm为Time类型 tm := time.Unix(timestamp, 0) fmt.Println(tm.Format("2006-01-02 03:04:05 PM")) fmt.Println(tm.Format("02/01/2006 15:04:05 PM")) //从字符串转为时间戳,第一个参数是格式...阅读全文

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

golang中time包用法

time包中包括两类时间:时间点(某一时刻)和时常(某一段时间) 1时间常量(时间格式化) const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 MST 2006" RubyDate = "Mon Jan 02 15:04:05 -0700 2006" RFC822 = "02 Jan 06 15:04 MST" RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone RFC850 = "Monday, 02-Jan-06 15:04:05 MST" RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST...阅读全文

博文 2015-06-18 19:00:34 chenbaoke

[Golang]Map的一个绝妙特性

补充说明:一些评论的人对本文中的一些内容感到很困惑,但是我不想让大家感到我言语不清,所以在此澄清一下:是的, 默认情况下,向一个hash表插入的元素是没有固定顺序的。但是因为很多原因,比如有一些帖子就指出了不是所有的map都是hash表(而且有些语言还有有顺序的hash表,比如java的TreeMap), 我还是能够了解为什么很多人(尤其是对Go map实现机制比较了解的人)会假定遍历map元素的顺序和向map插入元素的顺序是相同的。我原来的例子是我自己想出来的,并没有演示出大多数版本的Go关于这方面的特点(尽管我听说对于1.3版本可能是可以工作的)。所以我把代码更新了一下,你可以把代码复制到你的编辑器或者Go Playground来看看效果。Go确实是从随机偏移位置来开始map的元素遍历...阅读全文

博文 2015-03-06 12:00:01 abv123456789

Go与GUI——GO语言的图形界面Walk

GO没有原生的界面库,所以不能直接用来写GUI界面。但最近互联网上已经涌现出不少成熟、好用的第三方界面库。使用它们,就同样可以写出同C#、C++的界面。而且效率还更胜一筹。 关于Walk界面库(官方介绍): Walk是一个写给Golang的Window应用程序库套件,它主要用于桌面GUI的开发,但也有更多的东西。 Part One:安装Walk 在浏览这部分前,请确定已经配置安装完毕go语言的环境。如果没有,可以参考go官网的Install帮助。另外,注意:这个Walk库只能运行在Go 1.1.x及以上。 要安装Walk很简单,只要运行命令:go get github.com/lxn/walk 等待命令执行完毕,这时候检查GOPATH的src与pkg下,是否有符合自己计算机环境的walk目录...阅读全文

Golang心得

先大概说下为什么用 Golang。我是一个对语言有洁癖的人,曾经是一个C+Python 的坚定呐喊者,最常说的一句话就是,只要熟练这两种,什么情况都能应付,根本不用 Java 和 C++(纯指我所在的领域)。核心代码用C,速度快,需要记的语言细节少;外围用 Python glue,灵活,简洁,任何模块都容易上手,绝配。Java 的繁琐,C++ 的无数无用的特性,都让我只在不得不用的时候才去用。Objective-C 是另一个我欣赏的语言,问题是不跨平台,过于封闭。 可惜的是,在这个节奏极快的时代,不是所有情况下都适合上C。之前有一个项目也是类似的架构和规模,为了节省时间,当初几乎没有服务器平台编程经验的我,在服务器端选择用 Django+Apache+MySQL 做,成熟,社区活跃,又是 P...阅读全文

博文 2015-06-17 18:01:03 wjk88888

GO到底适合干什么?

LZ最近从上家公司java转到go,工作内容还是主要业务逻辑代码,感觉go写起来不是很顺畅(oop思想可能根深蒂固了,语言熟练度也是一个原因),一个Orm框架用起来就特别麻烦。。。个人感觉基于go的特性还是做一些基础的服务器组件会很有优势。。写一般的业务代码简直别扭。。没泛型、if err != nil等等.. 当然好处就是很多东西要自己实现,没有可靠的轮子。。。大家都用GO做什么呢...阅读全文

【GoLang笔记】浅析Go语言Interface类型的语法行为及用法

Go不是一种典型的OO语言,它在语法上不支持类和继承的概念。 没有继承是否就无法拥有多态行为了呢?答案是否定的,Go语言引入了一种新类型—Interface,它在效果上实现了类似于C++的“多态”概念,虽然与C++的多态在语法上并非完全对等,但至少在最终实现的效果上,它有多态的影子。 那么,Go的Interface类型到底是什么呢?怎么使用呢?这正是本篇笔记试图说明的问题。 1. Method(s) in Go 在说明Interface类型前,不得不先用Go的method(s)概念来热身,因为Go语言的interface与method(s)这两个语法有非常紧密的联系。 虽然Go语言没有类的概念,但它支持的数据类型可以定义对应的method(s)。本质上说,所谓的method(s)其实就是函数...阅读全文

博文 2015-03-23 11:00:06 slvher

Golang开发环境搭建-Vim篇

Golang开发环境搭建-Vim篇 十一 07 bigwhite技术志 Editor, errcheck, Git, github, Go, go.tools, gocode, godef, goimports, Golang, golint, gorename, gosublime, hg, IDE, Mercurial, MolokaiTheme, neocomplete, neosnippet, pathogen, SublimeText2, sublimetext3, Ubuntu, ultisnips, Vim, vim-go, vimrc, Vundle, YCM, 代码补齐, 编辑器, 语法高亮 评论关闭 虽说sublimetext3+gosublime+gocode是目前较为...阅读全文

博文 2014-11-07 23:01:34 bigwhite

golang fmt.printf()

package main import "fmt" import "os" type point struct { x, y int } func main() { //Go 为常规 Go 值的格式化设计提供了多种打印方式。例如,这里打印了 point 结构体的一个实例。 p := point{1, 2} fmt.Printf("%v\n", p) // {1 2} //如果值是一个结构体,%+v 的格式化输出内容将包括结构体的字段名。 fmt.Printf("%+v\n", p) // {x:1 y:2} //%#v 形式则输出这个值的 Go 语法表示。例如,值的运行源代码片段。 fmt.Printf("%#v\n", p) // main.point{x:1, y:2} //需要打印值的...阅读全文

博文 2015-04-21 03:00:01 benlightning

Go开发工具

1.4 Go开发工具 本节我将介绍几个开发工具,它们都具有自动化提示,自动化fmt功能。因为它们都是跨平台的,所以安装步骤之类的都是通用的。 LiteIDE LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),由visualfc编写。 图1.4 LiteIDE主界面 LiteIDE主要特点: 支持主流操作系统 WindowsLinuxMacOS X Go编译环境管理和切换 管理和切换多个Go编译环境支持Go语言交叉编译 与Go标准一致的项目管理方式 基于GOPATH的包浏览器基于GOPATH的编译系统基于GOPATH的Api文档检索 Go语言的编辑支持 类浏览器和大纲显示Gocode(代码自动完成工具)的完美支持Go语言文档查看和Api快速检索代码表达式信息显示F1源...阅读全文

博文 2014-10-29 18:00:00 e_wsq

跨平台编译Go程序(交叉编译)

(1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件。 $ cd /usr/local/go/src $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 如果是 Windows 则修改 GOOS 即可。 $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash (2) 现在可以编译 Linux 和 Windows 平台所需的执行文件了。 $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build $ CGO_ENABLED=0 GOOS=windows GOARCH=amd...阅读全文

[笔记]Go语言的字符串拼装方式性能对比

Go语言中字符串的拼装方法很多,那么问题来了,到底哪家性能好? 下面代码,分别比较了 fmt.Sprintf,string +,strings.Join,bytes.Buffer,方法是循环若干次比较总时间。 在VMWare下的Ubuntu 14.04下运行的结果表明: fmt.Sprintf 和 strings.Join 速度相当 string + 比上述二者快一倍 bytes.Buffer又比上者快约400-500倍 如果循环内每次都临时声明一个bytes.Buffer来使用,会比持续存在慢50%,但是仍然很快 测试代码如下: package main import ( "bytes" "fmt" "strings" "time" ) func benchmarkStringFuncti...阅读全文

博文 2015-03-08 03:00:01 journeyonmyway

Mac下golang开发环境配置

go语言在开发效率和运行效率中的优势让很多人青睐,所以有倾向打算转向go语言的开发。 下面介绍在Mac OS X中golang的开发环境配置。 1.安装brew brew是一个mac下的由ruby开发的包管理系统,其官网是http://brew.sh。你只要在你的终端中执行 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 便可将其安装完成。 安装完之后输入命令 brew update 即可获得更新并切换到速度最快的源上 2.安装go brew install go 3.安装分布式管理工具hg brew install hg 4.建立go的环境变量文件夹 cd $...阅读全文

博文 2015-05-20 04:00:05 jacklandrin

golang中io包用法(二)

本文转自https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter01/01.1.md,并在此基础上进行修改. io 包为I/O原语提供了基本的接口。它主要包装了这些原语的已有实现。 由于这些接口和原语以不同的实现包装了低级操作,因此除非另行通知,否则客户端不应假定它们对于并行执行是安全的。 在io包中最重要的是两个接口:Reader和Writer接口。本章所提到的各种IO包,都跟这两个接口有关,也就是说,只要实现了这两个接口,它就有了IO的功能。 Reader接口 Reader接口的定义如下: type Reader interface { Read(p []byte) ...阅读全文

博文 2015-01-27 10:00:12 chenbaoke

全套Go语言学习教程,适合编程零基础或者有其他编程语言基础的同学。

# 课程介绍 本学习课件是尚硅谷的韩顺平老师亲自的录制的,课件内容包括:视频课件 、课堂笔记、辅助文档、代码等。 韩老师讲课非常有特色,生动有趣,通俗易懂,我就是一路跟着这套视频学过来的。 # 获取方式 评论里留下你的邮箱,我争取在评论后的一个礼拜内把视频发到邮箱里,女士优先(如果有的话,哈哈)。 ![文件截图.png](https://static.studygolang.com/181214/bae187056b873bf8f0e1d3caaa3193ad.png) ![视频截图.png](https://static.studygolang.com/181214/27232d537149f06841a7933c36817a8f.png...阅读全文

博文 2018-12-14 10:29:06 Subhuti_hu

Go语言学习教程,基础-实战-面试视频学习资料

GOlang 4.0最新版本 由兄弟连欧阳桫老师全程录制 课件内容包括:视频课件 、课堂笔记、辅助文档、代码等。 欧阳桫老师的线下课要1万多,学生已经在排名前50的公链拿了3w+月薪。 跟着来没毛病,有需要我也可以发老师微信 获取方式:评论里留下邮箱或者微信,每天晚上我争取把视频发过去 还有兄弟连GO语言的教材4本书的电子版 1.面向未来超级账本 2.GO语言编程与实战 3.公链开发实战 4.以太坊智能合约与APP开...阅读全文

初探 Go 的编译命令执行过程

引言 Go 语言这两年在语言排行榜上的上升势头非常猛,Go 语言虽然是静态编译型语言,但是它却拥有脚本化的语法,支持多种编程范式(函数式和面向对象)。Go 语言最最吸引人的地方可能是其原生支持并发编程(语言层面原生支持和通过第三方库支持是有很大区别的)。Go 语言的对网络通信、并发和并行编程的支持度极高,从而可以更好地利用大量的分布式和多核的计算机。开发者可以通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 channel 来实现各个 goroutine 之间的通信。他们实现了分段栈增长和 goroutine 在线程基础上多路复用技术的自动化。 2017年7月 TIOBE 语言排行榜 Go 首次进入前十。今天就让我们来探究探究 Go 的编译命令执行过程。 一. 理解 G...阅读全文

博文 2017-08-07 00:05:09 一缕殇流化隐半边冰霜

Go学习笔记之:range函数

range函数是个神奇而有趣的内置函数,你可以使用它来遍历数组,切片和字典。 当用于遍历数组和切片的时候,range函数返回索引和元素; 当用于遍历字典的时候,range函数返回字典的键和值。 package main import "fmt" func main() { // 这里我们使用range来计算一个切片的所有元素和 // 这种方法对数组也适用 nums := []int{2, 3, 4} sum := 0 for _, num := range nums { sum += num } fmt.Println("sum:", sum) // range 用来遍历数组和切片的时候返回索引和元素值 // 如果我们不要关心索引可以使用一个下划线(_)来忽略这个返回值 // 当然我们有的时...阅读全文

博文 2014-11-27 23:00:02 Goopand

设置Golang的GOPATH

Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. golang安装 golang下载 sudo tar -zvxf go1.6.2.linux-amd64.tar.gz sudo mv go /usr/local/go #设置环境变量 vi /etc/profile export GOROOT=/usr/local/go #设置为go安装的路径 export GOPATH=$HOME/gocode #默认安装包的路径 export PATH=$PATH:$GOROOT/bin:$GOPATH/bin source /etc/profile GOPATH设置 go命令依赖一个重要的环境变量:$GOPATH GOPATH...阅读全文

博文 2016-05-31 21:00:01 chenjh213

gRPC的简单Go例子

gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的TCP链接次数、节省CPU使用、和电池寿命。 这次看到的例子来自: gRPC in 3 minutes (Go) http://www.grpc.io/docs/installation/go.html 分别获得客户端和服务器端的代码如下: $ go get -u github.com/grpc/grpc-commo...阅读全文

博文 2015-06-04 03:00:00 ghj1976

GO使用SMTP发送邮件

核心代码:smtp.SendMail(host, auth, user, send_to, msg),auth := smtp.PlainAuth("", user, password, hp[0]) 可行方案:使用企业邮箱的SMTP发送邮件,host :="smtp.exmail.qq.com:25",因此需要一个企业邮箱的账号和密码 直接上代码: main.go package main import ( "fmt" "net/smtp" "strings" ) func SendToMail(user, password, host, to, subject, body, mailtype string) error { hp := strings.Split(host, ":") a...阅读全文

博文 2014-12-22 15:00:01 0412

golang开发环境搭建

Golang开发环境搭建 Golang 入门教程 开发环境搭建 介绍 Go语言是谷歌推出的一种全新的编程语言, 可以在不损失应用程序性能的情况下降低代码的复杂性。 谷歌首席软件工程师罗布派克(Rob Pike)说: 我们之所以开发Go, 是因为过去1 0多年间软件开发的难 度令人沮丧。 谷歌资深软件工程师罗布·派克(Rob Pike)表示, “Go让我体验到了从未有过的开发效率。 ”派克表示, 今天的C++或C一样, Go是一种系统语言。 他解释道, “使用它可以进行快速开发, 同时它还是一个真 正的编译语言, 我们之所以现在将其开源, 原因是我们认为它已经非常有用和强大。 百度百科 维基百科 golang官网 安装 Windows 官方说明 http://golang.org/doc/in...阅读全文

博文 2014-12-05 14:00:02 steven_hl_0901

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

一个有关Golang变量作用域的坑 一 13 bigwhite技术志 Go, Golang, scope, 作用域, 函数, 变量作用域, 坑 4 Comments 临近下班前编写和调试一段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.Print...阅读全文

博文 2015-01-20 09:24:46 bigwhite

golang url encode

import ( fm "fmt" "net/url" rt "runtime" ) func main() { var urlStr string = "http://baidu.com/index.php/?abc=1_羽毛" l, err := url.ParseQuery(urlStr) fm.Println(l, err) l2, err2 := url.ParseRequestURI(urlStr) fm.Println(l2, err2) l3, err3 := url.Parse(urlStr) fm.Println(l3, err3) fm.Println(l3.Path) fm.Println(l3.RawQuery) fm.Println(l3.Query()) fm....阅读全文

博文 2014-10-04 19:26:04 the-moving-ear

go编程之beego\orm使用

前面有提到go的mysql操作,但使用其进行数据库的操作封装,显然在实际的开发迭代中有几大问题存在,首先,sql操作及语句啰嗦而且复杂,其次工作效率也不是很高;如果使用此方法进行数据库开发,势必照成过多的代码冗余,且使用过程中容易产生各种问题。所以,今天我们一起来看看怎么使用beego下orm框架来辅佐我们进行mysql数据库操作。 orm即对象关系映射,通过类或者结构体与数据库表进行一一对应,今天我们通过简单的数据库操作代码来对照说明,且在代码中有对应操作的解释: import ( "fmt" _ "github.com/Go-SQL-Driver/MySQL" "github.com/astaxie/beego/orm" //对应的beego/orm库 可以通过 go get来获取到本地...阅读全文

博文 2015-06-17 23:08:20 xixionedream

go依赖包管理工具对比

July 10, 2017 in Tech GOPATH和GOROOT GOROOT并不是必须要设置的。 GOPATH必须要设置,但并不是固定不变的 本项目内部的依赖 管理外部的依赖包 使用GOPATH来管理外部依赖 vendor godep glide govendor golang官方dep 各依赖管理工具对比 gvt vendor的问题 当开始真正用go去做项目的时候,不可避免的就会遇到依赖包的问题。go的依赖包管理与java+maven的依赖管理不太一样,我们从GOPATH开始逐渐理解其思想,然后再对比下目前常用的依赖包管理工具。 GOPATH和GOROOT 初学者很容易会被这两个环境变量给搞晕。 GOROOT并不是必须要设置的。 GOROOT不是必须要设置的。参见Installin...阅读全文

博文 2017-07-30 05:45:50 伊布

Go项目目录管理

在Go的官网文档How to Write Go Code中,已经介绍了Go的项目目录一般包含以下几个: src 包含项目的源代码文件; pkg 包含编译后生成的包/库文件; bin 包含编译后生成的可执行文件。 可以通过下面的例子来说明工程目录的组织管理。(Windows 7 64位,go version go1.3.3 windows/amd64) 1. 创建一个库文件 创建一个库文件a.go并保存在scr目录的一个子目录下面。 package myfunc import "fmt" func Afunc(str string) { fmt.Println("a.go is package mufunc.") fmt.Println(str) } 这时候目录结构如下: ...阅读全文

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

Go编码规范指南

自http://golanghome.com/post/550 Go编码规范指南 序言 看过很多方面的编码规范,可能每一家公司都有不同的规范,这份编码规范是写给我自己的,同时希望我们公司内部同事也能遵循这个规范来写Go代码。 如果你的代码没有办法找到下面的规范,那么就遵循标准库的规范,多阅读标准库的源码,标准库的代码可以说是我们写代码参考的标杆。 格式化规范 go默认已经有了gofmt工具,但是我们强烈建议使用goimport工具,这个在gofmt的基础上增加了自动删除和引入包. go get golang.org/x/tools/cmd/goimports 不同的编辑器有不同的配置, sublime的配置教程:http://michaelwhatcott.com/gosublime-goi...阅读全文

博文 2014-12-15 00:00:01 hittata

Golang字符串切割函数Split

先说结论:大Golang里面,如果一个空字符串通过strings包的Split函数进行切割,那么结果是一个长度为1的数组,里面的内容是一个空字符串。 为了验证,分别在1.0.1、1.1、1.2.2、1.3.3、1.4rc上面进行了测试,验证了上面的结论是正确的。 func main() { a := strings.Split("", ";") fmt.Printf("%d****%s****\n", len(a), a[0]) } 这个也很好理解。切割一个空字符串,肯定是没办法切的,那么结果就是没切开,把原字符串直接加入结果数组里面而已。只不过一开始有点难理解,因为我们都会认为如果是空字符串去切,结果数组里应该是空的。 最近升级了beego1.4.2,谢大把beego控制器获取请求参数函数...阅读全文

博文 2017-02-10 16:00:13 Bryce

Golang- import 导入包的语法

载自:http://blog.csdn.net/zhangzhebjut/article/details/25564457?utm_source=tuicool 一 包的导入语法 在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用 fmt.Println("hello world") 上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块,当然Go的import还支持如下两种方式来加载自己写的模块: 相对路径 import "./model" //当前文件同一目录的model目录,但是不建议这种方式import 绝对路径 import "shorturl/model" //加...阅读全文

博文 2015-07-30 03:00:00 code-review

Go_Json_Unmarshal_Marshal

Go按照RFC 4627的标准实现了一个json编解码的标准库 func Unmarshal(data []byte, v interface{}) error Unmarshal用于反序列化json的函数 根据data将数据反序列化到传入的对象中 仔细查看代码中的四种情况 1 将json反序列化成struct对象 2 将json反序列化到可以存储struct的slice中 3 将json 反序列化到map中 4 将json反序列化到slice中 package main import ( "encoding/json" "fmt" ) func main() { type Person struct { Name string Age int Gender bool } //unmarsh...阅读全文

博文 2014-10-31 14:00:09 u012807459

Go 语言测试(Test)、性能测试(Benchmark) 学习笔记

简介 Test Package testing provides support for automated testing of Go packages. It is intended to be used in concert with the “go test” command, which automates execution of any function of the form. testing包提供了对Go包的自动测试支持。 这是和go test 命令相呼应的功能, go test 命令会自动执行所以符合格式 func TestXXX(t *testing.T) 的函数。 Benchmark Functions of the form func BenchmarkXxx(b ...阅读全文

博文 2015-12-14 18:00:00 cchd0001

Go net/http包

Go net/http包 Go Http客户端 get请求可以直接http.Get方法 package main import ( "fmt" "net/http" "log" "reflect" "bytes" ) func main() { resp, err := http.Get("http://www.baidu.com") if err != nil { // handle error log.Println(err) return } defer resp.Body.Close() headers := resp.Header for k, v := range headers { fmt.Printf("k=%v, v=%v\n", k, v) } fmt.Printf("r...阅读全文

博文 2017-02-22 04:00:30 xxggy

Golang-上传-and-接收-文件

package main import ( "fmt" "io" "net/http" "log" ) // 获取大小的借口 type Sizer interface { Size() int64 } // hello world, the web server func HelloServer(w http.ResponseWriter, r *http.Request) { if "POST" == r.Method { file, _, err := r.FormFile("userfile") if err != nil { http.Error(w, err.Error(), 500) return } defer file.Close() f,err:=os.Create("fi...阅读全文

博文 2015-03-03 21:48:18 nulijiabei

golang json 处理的一些例子代码

json 处理的例子代码, 解析结果看后面注释。 package main import "encoding/json" import "fmt" import "os" type Response1 struct { Page int Fruits []string } type Response2 struct { Page int `json:"page"` Fruits []string `json:"fruits"` } type CommonArg struct { SessionId int64 `json:",string"` Op string `json:"Op,omitempty"` AppId string `json:"appId,omitempty"` Onlin...阅读全文

博文 2015-02-10 03:00:00 ghj1976

golang substring

在java下习惯了String.subString(start,end) 然后再golang继续敲substring木有了,看了下代码,也是原生支持的 但是百度发现有些人竟然把字符串转成字符数组再根据下标取,简直误人子弟 go的string 支持直接根据 index 截取字符串的 例如 str := "hello world" fmt.Print(str[0:5]) 运行的时候将会输出 hello 很简单...阅读全文

博文 2015-02-28 03:00:01 modprobe

GoLang学习 -- array(数组)和slice(切片)

在使用golang过程当中,经常会用到数组类型。可在查看golang官方文档中发现,在golang语言当中,除了存在数组类型之外,还存在有切片类型。这个切片类型在其他语言都没有出现过,那么这个切片类型到底是一种什么类型呢?切片和数组又有什么区别? 下面就谈谈在golang中数组和切片的故事。 首先我们看一下数组: golang中的数组是一种由固定长度和固定对象类型所组成的数据类型。例如下面: var a [4]int a[0] = 1 i := a[0] // i == 1 a是一个拥有4个int类型元素的数组。当a一旦被声明之后,元素个数就被固定了下来,在a这个变量的生命周期之内,元素个数不会发生变化。而此时a的类型就是[4]int,如果同时存在一个b变量,为[5]int。即便两个变量仅仅...阅读全文

博文 2015-09-26 20:00:48 vikings_1001

golang 的md5加密

先看实现代码: package main import ( "crypto/md5" "encoding/hex" "fmt" ) func main() { h := md5.New() h.Write([]byte("123456")) // 需要加密的字符串为 123456 cipherStr := h.Sum(nil) fmt.Println(cipherStr) fmt.Printf("%s\n", hex.EncodeToString(cipherStr)) // 输出加密结果 } 代码输入效果: 说明: Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New和Sum函数。 这里直接对一串字符串计算MD5。其中通过md5.New...阅读全文

博文 2015-01-29 03:00:02 ghj1976

如何Golang开发Android应用(for golang1.4)

载随意:文章出处 http://shengxiang.me/article/38/write-android-program-with-golang.html Golang是一门强类型编程语言,2009年推出,在今年2014年,开始支持android的开发了。 ![golang-android](/static/upload/201411200924478.png) 环境配置好复杂,我不得不唠叨几句。 需要下载golang1.4rc版,下载ndk,然后编译。 然后用go get 下载gobind这个工具, 然后,将写好的代码用gobind转化下,然后使用特殊的编译命令,将代码编译成.so文件,将生成的相关文件,放到android studio的项目中。然后java代码中,利用jni调用引用的...阅读全文

博文 2014-11-20 22:44:09 shengxiang

golang数据类型map

1 map简介 map是一堆键值对的未排序集合,类似Python中字典的概念,它的格式为map[keyType]valueType,是一个key-value的hash结构。map的读取和设置也类似slice一样,通过key来操作,只是slice的index只能是int类型,而map多了很多类型,可以是int,可以是string及所有完全定义了==与!=操作的类型。 在C++/Java中,map一般都以库的方式提供,比如在C++中是STL的std::map<>,在Java中是Hashmap<>,在这些语言中,如果要使用map,事先要引用相应的库。而在Go中,使用map不需要引入任何库,并且用起来也更加方便。 2 map声明 声明map的语法如下 var map变量名 map[key] valu...阅读全文

博文 2015-06-17 20:17:47 JesseYoung

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

无坑安装使用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

服务器开发利器golang context用法详解

本文主要基于官方文档Go Concurrency Patterns: Context以及视频Advanced Go Concurrency Patterns的学习而得。 背景 在go服务器中,对于每个请求的request都是在单独的goroutine中进行的,处理一个request也可能设计多个goroutine之间的交互, 使用context可以使开发者方便的在这些goroutine里传递request相关的数据、取消goroutine的signal或截止日期。 Context结构 // A Context carries a deadline, cancelation signal, and request-scoped values // across API boundaries. ...阅读全文

博文 2017-06-29 09:07:03 kingeasternsun

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 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 包到归档或者分享库,可以...阅读全文

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日期字符串与时间戳转换

坑爹啊 网上搜的到都是坑爹代码 只好自己搞 //获取本地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

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