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

模拟浏览器登录操作

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

[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

IntelliJ Idea 14 安装 Golang 插件 google-go-lang-idea-plugin 的方法

IDEA 的编辑器都很强悍,所以现在学Go 也想用他啊,无奈这个插件搞了好久,整理了下流程记录下 1. 当然是下载 IDEA 编辑器了 http://www.jetbrains.com/idea/download/ 附上旗舰版注册机地址 http://download.csdn.net/detail/abacaba/8240327 有购买能力的请尽力购买正版哦,这么好的IDE用盗版真心觉得很罪恶啊,无奈包包里的票票太少 2. 下载插件项目源码自行编译jar插件包 https://github.com/go-lang-plugin-org/go-lang-idea-plugin 将下载的zip包解压,然后执行 File -> open 操作打开该项目 打开该项目后,进行 SDK 和 模块配置 ...阅读全文

博文 2015-03-12 05:00:00 zsjangel

微信朋友圈转疯了(golang写小爬虫抓取朋友圈文章)

很多人在朋友圈里转发一些文章,标题都是什么转疯啦之类,虽然大多都也是广告啦,我觉得还蛮无聊的,但是的确是有一些文章是非常值得收藏的,比如老婆经常就会收藏一些养生和美容的文章在微信里看。 今天就突发奇想,不如利用搜索引擎把朋友圈的文章分门别类的(当然是老婆感兴趣的类型了)抓取出来,然后把图片也Down下来,生成一个网站给朋友们看岂不是不错? 说做就做,于是就有了这个网站:朋友圈转疯了 (http://www.meijia0.com) 域名不太好,凑合着用呗。(之前其实是准备用来做美甲图片站的,后来搁置了。因为老婆在家真的是没有时间去经营这种东西)。 既然说做就做,先利其器嘛, 把落灰的GO再捡起来,顺便学习了一下七牛云存储的API(不得不说真的是很受用),写了一个spider(gocrawl/...阅读全文

博文 2014-10-04 19:26:07 forbe

golang Socket编程

Socket基础知识 通过上面的介绍我们知道Socket有两种:TCP Socket和UDP Socket,TCP和UDP 通过上面的介绍我们知道Socket有两种:TCP Socket和UDP Socket,TCP和UDP是协议,而要确定一个进程的需要三元组,需要IP地址和端口。 IPv4地址 目前的全球因特网所采用的协议族是TCP/IP协议。IP是TCP/IP协议中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年。 IPv4的地址位数为32位,也就是最多有2的32次方的电脑可以联到Internet上。近十年来由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址的发放愈趋严格,目前基本上IPv4的地址很少了,我们公...阅读全文

博文 2014-10-04 19:26:06 zhjih123

几款Golang IDE对比

Go语言目前已经在开发者中越发的流行,自然很多人都在寻找合适的IDE来实现代码语法高亮、自动补全以及其他编辑特性。 下面就几种常用的IDE进行对比介绍: 1. Sublime text 这个文本编辑器在开发者中较为普及,应该说sublime并非一个完全成熟的IDE,但是它具备很多语言的扩展插件,比如python、lua等,其中有一个插件GoSublime专门针对go语言,GoSublime提供了语法高亮、自动补全等功能,这些功能使得Sublime Text成为一很实用的Go IDE。 2. IntelliJ IntelliJ IDE由Jetbrains提供,在java开发者中非常流行,其自带的Go插件支持语法高亮显示、代码补全、自动编译以及子库支持。这就使得你可以很方便地将项目拆分成多个包的...阅读全文

博文 2017-08-25 07:31:34 rudyn

求教:最好用顺手的Go语言IDE或者编辑器

因为写PHP和前端的缘故,我是JetBrains的重度依赖用户,曾经IDEA、PHPStorm装了一大堆。 JetBrains也有Go语言的扩展,但总是感觉这货华丽丽的不太实用(对Go来说),毕竟Go是静态编译型语言,不需要那么强大的动态方法、类型提示功能,随便打两个字母,他就提示一大堆,有的没有的都一股脑的推送给你,而可能我需要的只是局部变量的一个提示而已。 求问各路大仙,日常习惯用什么编辑器或IDE可推荐?最好附推荐理由...阅读全文

golang:xpath选择器“htmlquery”简单用法

在做爬虫时,经常要用到html解析器提取数据,Python里面有神器lxml,go里面可以选择htmlquery或者goquery。其中htmlquery使用xpath选择器,goquery使用css选择器。就使用体验来说,htmlquery更方便一些,这儿主要介绍htmlquery的一些基本用法。 htmlquery是用于HTML的XPath数据提取库,可让通过XPath表达式从HTML文档中提取数据,使用起来很简单方便。xpath语法见https://www.w3school.com.cn/xpath/xpath_syntax.asp。 htmlquery安装: go get github.com/antchfx/htmlquery 经常使用到的函数有: func Parse(r io....阅读全文

博文 2019-10-30 18:32:53 aside section._1OhGeD

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

科学上网工具包 V2Ray

V2Ray 是一个科学上网工具包,用于简化和复用其它科学上网工具,加速二次开发。 “V2”来源于 [V2 火箭](https://zh.wikipedia.org/wiki/V-2%E7%81%AB%E7%AE%AD),Ray 即射线,意指新一代的科学上网工具。 ## 主要特点 * 多对多服务器支持,负载均衡 * 支持多用户 * 开放协议支持,兼容流行的科学上网工具 ## 捐赠 目前 V2Ray 还在早期开发阶段,暂时没什么可用性,也谈不上捐赠。如果你执意想捐赠,请发送 Amazon Gift Card 至 [donate@v2ray.com](mailto:donate@v2ray.com...阅读全文

开源项目 2015-09-27 16:00:00 v2ray

Golang GBK与UTF-8互转

package main import ( "code.google.com/p/mahonia" "fmt" ) func main() { //"你好,世界!"的GBK编码 testBytes := []byte{0xC4, 0xE3, 0xBA, 0xC3, 0xA3, 0xAC, 0xCA, 0xC0, 0xBD, 0xE7, 0xA3, 0xA1} var testStr string utfStr := "你好,世界!" var dec mahonia.Decoder var enc mahonia.Encoder testStr = string(testBytes) dec = mahonia.NewDecoder("gbk") if ret, ok := dec.Conve...阅读全文

博文 2015-02-03 10:00:02 ____追梦人

Go 系列教程 —— 7. 包

这是 Golang 系列教程的第 7 个教程。 ### 什么是包,为什么使用包? 到目前为止,我们看到的 Go 程序都只有一个文件,文件里包含一个 main [函数](https://studygolang.com/articles/11892)和几个其他的函数。在实际中,这种把所有源代码编写在一个文件的方法并不好用。以这种方式编写,代码的重用和维护都会很困难。而包(Package)解决了这样的问题。 **包用于组织 Go 源代码,提供了更好的可重用性与可读性**。由于包提供了代码的封装,因此使得 Go 应用程序易于维护。 例如,假如我们正在开发一个 Go 图像处理程序,它提供了图像的裁剪、锐化、模糊和彩色增强等功能。一种组织程序的方式就是根据不同的特性,把代码放到不同的包中。比如裁剪可以是...阅读全文

博文 2017-12-08 14:11:32 heyulong

GO同包内不同文件方法引用问题

问题:GO语言同包内不同文件方法引用在本地LiteIDE中可运行,但在linux环境下报错: 在main.go中引用c2c_admin_base_info.go中GetcsChatCntTrend方法: 本地运行正常,但部署至linux服务器时,报错: 解决方案:将c2c_admin_base_info.go放到包data下 main.go c2c_admin_base_info.go 层级关系: 注:包和package有关系:main包和main函数比较特殊,是程序的入口,其他的包就要和文件夹名字一样(感谢扫盲的GO大牛...阅读全文

博文 2014-10-16 17:00:00 sea_198821

Go中运用chan的简单案例

开发环境:windows7 64位、编辑器:sublime text3 简要说明:Go中可以创建有缓冲的chan(比如: c1:=make(chan int,4)就是缓冲区大小为4的chan了 ),也可以创建没有缓冲的chan(比如: c2:=make(chan int)就是没有缓冲的chan)。 代码如下,代码中有注释: package main import ( "fmt" ) func main() { c := make(chan int, 2) //创建带有缓冲的chanel,缓冲大小是2 //这样调用函数,那么f1和f2就是并发执行了 go f1(c) //将参数c传递给f1() go f2(c) //将参数c传递给f2() c1 := <-c c2 := <-c //main函...阅读全文

博文 2015-11-14 09:00:01 汉斯-冯-拉特

Go 系列教程 —— 17. 方法

欢迎来到 [Golang 系列教程](/subject/2) 的第 17 个教程。 ### 什么是方法? 方法其实就是一个函数,在 `func` 这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。 下面就是创建一个方法的语法。 ```go func (t Type) methodName(parameter list) { } ``` 上面的代码片段创建了一个接收器类型为 `Type` 的方法 `methodName`。 ### 方法示例 让我们来编写一个简单的小程序,它会在结构体类型上创建一个方法并调用它。 ```go package main import ( "fmt" ) type Employee struc...阅读全文

博文 2018-01-22 18:00:02 polaris

golang 下载和上传,处理多文件上传

package main import ( "net/http" "os" "io" "strconv") func main() { f, err := os.OpenFile("K:/file.mp3", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) stat, err := f.Stat() //获取文件状态 if err != nil { panic(err) } //把文件指针指到文件末,当然你说为何不直接用 O_APPEND 模式打开,没错是可以。我这里只是试验。 url := "http://127.0.0.1:3000/assets/37-02.mp3" req,_ := http.NewRequest("GET",url,nil); re...阅读全文

博文 2014-10-04 19:26:06 ggaaooppeennngg

goproxy和msocks简介

goproxy是我个人写的,和shadowsocks同类的软件。当然,在设计之初我完全不知道shadowsocks的存在,goproxy的最初目标也不是成为shadowsocks的同类。只是我一直无法实现一个可靠的,能够达成目标的系统。最后想,那这样吧,我找一个跳一跳能够够到的苹果。大幅简化的结果就是goproxy——后来我才知道shadowsocks。 shadowsocks的基本原理 shadowsocks的基本概念,就是利用某种不同于SSL的协议,将本地的socks数据流转发到远程。这个协议,在默认版本中是一个凯撒变换,后来有了aes等加密算法。goproxy也采用了类似的做法,同样支持aes等加密算法。在每次连接时,客户端先用加密通道连接服务器端,然后完成整个连接通路。这样的设计鲁棒...阅读全文

博文 2014-10-06 06:06:32 shell909090

godebug:一个跨平台的Go程序调试工具

godebug是一个跨平台的Go程序调试工具,传统的编译型语言调试器使用底层系统调用并读取二进制文件用于调试各类符号。使用起来很麻烦而且很难移植。 godebug使用不同的方法,直接把源码作为目标程序,在每一行插入调试代码,然后编译并运行。结果就是一个全功能的调试器,完全可以移植到不同平台。事实上,由于有了gopherjs ,你也可以在浏览器上进行调试: 点击此处尝试原文调试窗口。通过原文的“DEBUG IT”按钮,你可以编辑程序并重新调试它。 工作原理 下面这张是描述上面例子的矢量图: 从中可以看出原始代码转换了两次:第一次godebug插入调试instrumentation,然后gopherjs将结果编译成JavaScript。 让我们看一下instrumentation步骤,以下是go...阅读全文

博文 2015-04-23 01:00:00 mengyidan1988

免费翻墙看YouTube

前几天看到论坛里关于一些用户问是否有免费的VPN使用的,看到有人建议试用下517VPN,效果还是很不错的,不需要任何的设置,直接登陆就OK了,看看访问的YouTube网站:大家要知道在国内访问国外的网站有时候有点慢是正常的: ![8.png](http://studygolang.qiniudn.com/160509/2f5defee103eee1c96a70b74042c22c7.png) 官网:www点517js点net 517VPN加速器芯晴博客: blog.sina.com.cn/u/577109386...阅读全文

golang http服务器跨域问题解决

func main() { openHttpListen() } func openHttpListen() { http.HandleFunc("/", receiveClientRequest) fmt.Println("go server start running...") err := http.ListenAndServe(":9090", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } func receiveClientRequest(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin"...阅读全文

博文 2016-04-12 20:00:01 JD85

golang高性能日志库zap配置示例

golang高性能日志库zap配置示例 zap是uber开源的Go高性能日志库,gitlab地址 安装 go get -u go.uber.org/zap 请注意,zap仅支持两个最新的Go版本。 示例 简单示例 格式化输出 package main import ( "go.uber.org/zap" "time" ) func main() { // zap.NewDevelopment 格式化输出 logger, _ := zap.NewDevelopment() defer logger.Sync() logger.Info("无法获取网址", zap.String("url", "http://www.baidu.com"), zap.Int("attempt", 3), zap....阅读全文

博文 2019-01-02 19:34:47 阿甘__

go语言示例-Timer计时器的用法

计时器用来定时执行任务,分享一段代码: package main import "time" import "fmt" func main() { //新建计时器,两秒以后触发,go触发计时器的方法比较特别,就是在计时器的channel中发送值 timer1 := time.NewTimer(time.Second * 2) //此处在等待channel中的信号,执行此段代码时会阻塞两秒 <-timer1.C fmt.Println("Timer 1 expired") //新建计时器,一秒后触发 timer2 := time.NewTimer(time.Second) //新开启一个线程来处理触发后的事件 go func() { //等触发时的信号 <-timer2.C fmt.Print...阅读全文

博文 2015-03-04 03:00:02 baiyuxiong

服务发现:Zookeeper vs etcd vs Consul

【编者的话】本文对比了Zookeeper、etcd和Consul三种服务发现工具,探讨了最佳的服务发现解决方案,仅供参考。 如果使用预定义的端口,服务越多,发生冲突的可能性越大,毕竟,不可能有两个服务监听同一个端口。管理一个拥挤的比方说被几百个服务所使用的所有端口的列表,本身就是一个挑战,添加到该列表后,这些服务需要的数据库和数量会日益增多。因此我们应该部署无需指定端口的服务,并且让Docker为我们分配一个随机的端口。唯一的问题是我们需要发现端口号,并且让别人知道。 当我们开始在一个分布式系统上部署服务到其中一台服务器上时,事情会变得更加复杂,我们可以选择预先定义哪台服务器运行哪个服务的方式,但这会导致很多问题。我们应该尽我们所能尽量利用服务器资源,但是如果预先定义每个服务的部署位置,那么...阅读全文

博文 2015-09-20 10:39:43 国会山上的猫TuxHu

Go 的快速 HTTP 包fasthttp

fasthttp 是 Go 的快速 HTTP 实现,当前在 1M 并发的生产环境使用非常成功,可以从单个服务器进行 100K qps 的持续连接。 HTTP 服务器性能与 net/http 比较 总而言之,fasthttp 比 net/http 快 10 倍 GOMAXPROCS=1 net/http: $ GOMAXPROCS=1 go test -bench=NetHTTPServerGet -benchmem PASS BenchmarkNetHTTPServerGet1ReqPerConn 100000 21211 ns/op 2407 B/op 30 allocs/op BenchmarkNe...阅读全文

Golang之bytes.buffer学习笔记

bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建 一个 Buffer (其实底层就是一个 []byte, 字节切片)...阅读全文

博文 2016-02-29 23:00:01 luomoshusheng

Go 系列教程 —— 24. Select

欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 24 篇。 ## 什么是 select? `select` 语句用于在多个发送/接收信道操作中进行选择。`select` 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,`select` 会随机地选取其中之一执行。该语法与 `switch` 类似,所不同的是,这里的每个 `case` 语句都是信道操作。我们好好看一些代码来加深理解吧。 ## 示例 ```go package main import ( "fmt" "time" ) func server1(ch chan string) { time.Sleep(6 * time.Second) ch <-...阅读全文

Go语言的分词器(sego)

今天,主要来介绍一个Go语言的中文分词器,即sego。本分词器是由陈辉写的,他的微博在这里,github详 见此处。由于之前他在Google,所以对Go语言特别熟悉。sego的介绍如下 sego是Go语言的中文分词器,词典用前缀树实现, 分词器算法为基于词频的最短路径加动态规划。 支持普通和搜索引擎两种分词模式,支持用户词典、词性标注,可运行JSON RPC服务。 分词速度单线程2.7MB/s,goroutines并发13MB/s, 处理器Core i7-3615QM 2.30GHz 8核。 接下来,以如下几个方面来介绍sego 1. sego的安装 2. sego的原理 3. sego的使用 1. sego的安装 首先,在Go语言中,有很多第三方包,可以帮助我们实现某些特定的功能。比如这里...阅读全文

博文 2015-03-26 23:00:08 ACdreamers

Golang 守护进程

package main import ( "fmt" "os" "os/exec" "path/filepath" ) func main() { fmt.Println(os.Getppid()) if os.Getppid() != 1 { //判断当其是否是子进程,当父进程return之后,子进程会被 系统1 号进程接管 filePath, _ := filepath.Abs(os.Args[0]) //将命令行参数中执行文件路径转换成可用路径 cmd := exec.Command(filePath) //将其他命令传入生成出的进程 cmd.Stdin = os.Stdin //给新进程设置文件描述符,可以重定向到文件中 cmd.Stdout = os.Stdout cmd.Std...阅读全文

博文 2015-02-11 19:00:02 未来还没来

golang模拟点击浏览器

发现一个很好玩的浏览器模拟操作包,下面演示一下,打开网站,点击某个链接 package main import ( "fmt" "time" "github.com/go-vgo/robotgo" "sourcegraph.com/sourcegraph/go-selenium" ) func main() { var webDriver selenium.WebDriver var err error caps := selenium.Capabilities(map[string]interface{}{"browserName": "firefox"}) if webDriver, err = selenium.NewRemote(caps, "http://localhost:951...阅读全文

博文 2017-09-11 03:41:47 YiYou.Org

Golang使用lxn/walk做GUI界面开发:邮件群发器

我也是刚刚使用walk这个组件,很多控件接口不熟悉,把我上次发的邮件群发器修改成图形界面的,线程发送邮件,gob库保存数据等。只提供作学习交流,仅供参考(界面很烂)。 接下来是main.go的代码: // Multi-SendEmail project main.go package main import ( "bufio" "encoding/gob" "errors" "fmt" "io" "net/smtp" "os" "strconv" "strings" "time" ) import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) type ShuJu struct { Name string Pwd ...阅读全文

博文 2014-12-20 13:00:01 一曲忧伤

打造atom成为golang开发神器

在我在Windows系统上开发的日子里,我使用IDE开发数年之久,例如Visual Basic IDE, Borland Delphi IDE, Visual C++ 和最后的Visual Studio;但当我在大约10年前转到Mac OS X下开发后,我放弃了上述所有的IDE。 我刚进入Mac编程世界的时候使用的是当时表现极好的Textmate编辑器。它是一个开发代码飞快的编辑器,拥有很好的语法高亮,拓展模块以及代码片段(code snippets),让我再次感觉非常高产。经过几年的衰退期,由于它没有继续更新了,很多人转向了Sublime Text和传统的VIM编辑器了。 Atom刚出来的时候我尝试使用了一下,但当时它并没有准备好。而最近几天它正式发布官方1.0版本后我决定再次试用一下,我...阅读全文

博文 2016-02-04 07:00:03 sweetvvck

golang高性能端口扫描器golang端口扫描器

## golang高性能端口扫描器--ScanPort ScanPort 端口扫描工具是一个可以检测服务器或是指定ip段的端口开放情况。 功能:可以快速扫描指定端口范围,ip地址范围。将扫描结果保存到本地! 先来体验一下运行后的效果: ![image.png](https://static.studygolang.com/200113/7e43c4ba5d3e7761c8135a1c2052e48e.png) ![image.png](https://static.studygolang.com/200113/e16172fd8d310c5df622f06759eeb27b.png) ### 安装使用 方法1. 你可以直接下载已编译好的文件直接运行 htt...阅读全文

开源项目 2020-01-13 18:51:19 duzhenxun

使用go build 进行条件编译

当我们编写的go代码依赖特定平台或者cpu架构的时候,我们需要给出不同的实现 C语言有预处理器,可以通过宏或者#define包含特定平台指定的代码进行编译 但是Go没有预处理器,他是通过 go/build包 里定义的tags和命名约定来让Go的包可以管理不同平台的代码 这篇文章将讲述Go的条件编译系统是如何实现的,并且通过实例来说明如何使用 1. 预备知识:go list命令的使用 在讲条件编译之前需要了解go list的简单用法 go list访问源文件里那些能够影响编译进程内部的数据结构 go list与go build ,test,install大部分的参数相同,但是go list不会执行编译操作。使用-f参数可以让我们提供的text/template里的代码在包含go/build.P...阅读全文

博文 2014-10-04 19:26:02 varding

Go语言爬虫

之前写爬虫都是用的python语言,最近发现go语言写起来也挺方便的,下面简单介绍一下。这里说的爬虫并不是对网络中的很多资源进行不断的循环抓取,而只是抓通过程序的手段都某些网页实现特定的信息抓取。可以简单分成两个部分:抓取网页,对网页进行解析。抓取网页。一般是向服务器发送一个http get/post请求,得到response。go提供的http包可以很好的实现。get方法:1resp, err := http.Get(“http://www.legendtkl.com") post方法:12resp, err := http.Post(“http://example.com/upload”, “image/jpg”, &buf)resp, err := http.PostForm(...阅读全文

博文 2017-07-02 19:22:57 Tao Kelu

初读谷歌自家的语言之作------Go语言和Dart语言

Go语言是一个新语言,截至目前为止,第一版正式版还没有发布。Go语言的设计者是Robert Griesemer, Rob Pike和Ken Thompson,当年设计C和Unix,后来的Plan9团队中的人 。Go语言的设计理念很明确,就是将动态类型语言的编程容易度和静态类型语言的安全效率结合起来。深入了解Go语言的发展历史以及完整的目标,请参考Go语言 FAQ。 Go语言有很浓厚的C的遗风,尽量屏蔽C++和Java的影响,比如没有独立的OO体系(并不是说不能OO),一切以struct为中心,没有exceptions(Oh yes!),仍然有指针,等等。但是,Go语言又吸取了很多新语言的精华,并带有自己独特的设计。比如 1. 保留但大幅度简化指针 Go语言保留着C中值和指针的区别,但是对于指...阅读全文

博文 2014-10-25 22:00:00 a4614181

golang实现udp接入服务器

前端通过udp与接入服务器连接,接入服务器与后端tcp服务器维持tcp连接。目录结构及后端tcp服务器代码同上一篇博客。 main.go package main import ( "lotuslib" ) const ( ip = "0.0.0.0" port = 1987 ) func main() { udplotus.UdpLotusMain(ip, port) } udplotus.go package udplotus import ( "encoding/json" "log" "net" "strconv" "time" ) const ( proxy_timeout = 5 proxy_server = "127.0.0.1:1988" msg_length = 1024 ...阅读全文

博文 2014-10-04 19:26:13 ciaos

设置GOPATH

> 我们为什么要设置GOPATH 设置GOPATH的要求对于首次安装Go工具的Go用户来说是一个主要问题,并且在他们使用这些工具的初始体验中得到了 错误 : "you have to set a GOPATH" 即使您不关心设置此变量,仍然需要您在项目中注意: 1. 用户仍需要将 $GOPATH/bin 添加到其PATH中以运行由`go install`初始化的可执行文件执行`go get` 2. 使用Go语言开发的用户仍然需要了解GOPATH的存在,其位置和结构。 3. 如果你的`GOROOT`(你检查Go的源代码的位置)是默认的GOPATH,如果没有设置GOPATH,工具将拒绝使用默认的GOPATH来破坏你的GOROOT。 4. 如果默认值不适合你,你仍然可能更喜欢设置自定义GOPATH...阅读全文

博文 2019-01-10 15:50:24 wujiangwei

Golang设置国内代理

Golang V1.13之后支持通过设置变量GOPROXY来修改代理地址,默认的代理服务器 https://proxy.golang.org在国内访问经常出现timeout image.png 可以通过设置国内代理来加速下载 详见:https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md 在终端执行即可 go env -w GOPROXY=https://goproxy.cn,direct image.pn...阅读全文

博文 2019-12-11 06:32:39 李小西033

golang 编辑器选择

因为当前我是在ubuntu下用idea来开发erlang so 开发golang也是用这款IDE 首先就是插件!!! File - setting - plugins - 搜索golang - install 创建new project的时候 添加go的sdk,这就是你系统安装的那个go ok,至此ubuntu下得intellij-IDEA 也配置好了,可以愉快的玩耍go了 PS: shift+F10:编译 shift+F9:调试 F2 stop调试 F5 进入函数(退出函数F8) F6 逐步逐句 F8 跳到下一...阅读全文

博文 2017-10-12 06:30:01 huangliang-hb

golang工程师面试第三天

**1**.简述golang中make和new的区别 make用于内建类型(只能用于创建map、slice 和channel)的内存分配。并且返回一个有初始值(非零)的T类型,而不是*T。 new用于各种类型的内存分配。new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。有一点非常重要:**new返回指针**。 **2**.简要描述go中的main和init函数的区别 首先,这两个函数应用位置不同,init函数可以应用于所有的package,main只能应用于 package main,需要注意的是虽然一个package中可以写任意多个init,但是无论是从可读性还是可维护性来说,都是不推荐的; 其次,...阅读全文

博文 2018-01-15 21:36:48 yinshidaoshi

Go 1.6发布 免翻墙下载

Go 1.6 正式版发布 该版本在语言本身层面并没有任何变化,主要改进包括: 1、默认使用 cgo 外部 C 编译器 2、支持 HTTP/2 协议 3、增加对 64 位 MIPS 的体验支持 (Linux) 4、增加对 32 位 x86 上的 Android 的体验支持 5、在 FreeBSD 上 go 1.6 默认使用 clang 而不是 gcc 作为外部 C 编译器 6、在 64 位 PowerPC 上 支持 cgo 7、NaCI 上 GO 1.5 要求 SDK 版本是 pepper-41,而 Go 1.6 可以使用最新的 SDK 版本 8、在 32 位 x86 系统中使用 —dynlink 或者 —shared 编译模式,寄存器 C...阅读全文

Go中的指针与函数接收器

Go中使用*号表示指针,但是没有指针算数,不能对其进行加减。同时内存管理都由Go来负责,不需要拖动释放内存。 Go中的函数接收者,可以为值类型,也可以是引用类型。 看代码: package main import ( "fmt" ) type Rect struct { X, Y,Area,Length float64 } func (r *Rect) CalArea() { r.Area = r.X*r.Y } func (r Rect) CalLength() { r.Length = 2*(r.X+r.Y) } func main() { r1 := Rect{3, 4, 0, 0} r1.CalArea() r1.CalLength() fmt.Println(r1.Area) fm...阅读全文

博文 2015-03-24 14:00:00 baiyuxiong

Go 语言使用 TCP keepalive

自:http://studygolang.com/articles/951 Go 语言使用 TCP keepalive 如果你写过某些 TCP socket 代码,你可能会疑问:如果网线被拨掉或者远程主机崩溃了我的TCP连接会怎样? 简短的答案是:一点影响都没有。这种情况下连接的结束远程主机是不会发送FIN数据包的,并且本地系统不能检测连接是否已中断。所以需要作为程序员的你来解决这种情况。 --zxp 翻译于 1 个月 前 0人顶 顶 翻译的不错哦! GO语言为你提供了解决这个问题的几种方法。首选的方法可能是 net.Conn 接口中的SetReadDeadline方法。假设你的连接在以一种特定的间隔来接收数据,你可以简单地把读取超时当作一个io.EOF错误并Close这个连接。很多现有的T...阅读全文

博文 2015-01-29 17:00:01 leonzhouwei

Golang关键字—— var

Golang使用 var 关键字定义变量,语法如下: 1 // 定义一个变量 2 var vname1 int 3 4 // 定义多个变量 5 var vname2, vname3 bool 6 7 // 定义一个变量并赋值 8 var vname4 string = "golang" 9 10 // 定义多个变量并赋值 11 var vname5, vname6 int = 2, 3 12 13 // 定义多个变量并赋值,由编译器推导变量类型 14 var vname7, vname8 = "golang", true 15 16 // 定义多个变量并赋值,由编译器推导变量类型 17 // 此方式只能用于函数内部 18 vname9, vname10 := 4, fals...阅读全文

博文 2015-05-21 10:00:00 nianhua

成都创享兄弟科技有限公司招聘php/go工程师

**公司介绍** 成都创享兄弟科技有限公司成立于2014年。由多名经验丰富的互联网从业者共同成立,公司在互联网营销、产品技术研发有着丰富的经验.曾服务多家知名企业,公司自主研发的一款基于云计算的在线响应式云建站系统,不懂技术也能通过竹子的可视化在线网站编辑器创建官网 项目网站 http://www.zhuzi.me **职位说明** - 热爱技术,有强烈的新技术求知欲; - 良好的团队沟通和协作能力; - 熟练使用go进行后端服务开发; - 熟悉javascript,php者优先。 也接受想要学习go的php开发者投简历。 有意向请加我微信 ![](http://77fkk5.com1.z0.glb.clouddn.com/upload/image...阅读全文

golang-otto JS解释器

otto是一个Go语言实现的JavaScript 解释器 otto是一个Go语言实现的JavaScript的语法分析器和解释器 1 2 3 import( "github.com/robertkrimen/otto" ) 在虚拟机中运行一些代码 1 2 3 4 5 vm := otto.New() vm.Run(` abc = 2+ 2; console.log("The value of abc is " + abc);// 4 `) 从虚拟机中获取一些值 1 2 3 value, err := vm.Get("abc") value, _ := value.ToInteger() } 设置一个数字变量 1 2 3 4 5 vm.Set("def", 11) vm.Run(` consol...阅读全文

博文 2015-11-17 02:00:03 shuanger_

golang中文unicode编码

http://www.dotcoo.com/golang-unicode-encode golang在很多时候要对中文进行unicode编码,今天有兴趣就写了一个,golang太爽了今天写了不少文章了.呵呵 package main import ( "fmt" "strconv" ) func main() { rs := []rune("golang中文unicode编码") json := "" html := "" for _, r := range rs { rint := int(r) if rint < 128 { json += string(r) html += string(r) } else { json += "\\u"+strconv.FormatInt(int64...阅读全文

博文 2014-10-05 00:00:01 DarkWingBoy

GO语言HTTP代理服务器

package main import ( "fmt" "io" "log" "net/http" "net/http/httputil" "net/url" ) func httpUserInfo(w http.ResponseWriter, r *http.Request) { ret := "your addr is:" + r.RemoteAddr + "\r\n" ret += "request headers:" + fmt.Sprint(r.Header) io.WriteString(w, ret) } func main() { targetURL, err := url.Parse("http://127.0.0.1:80") log.Println("program s...阅读全文

博文 2015-06-17 23:07:39 scybs

在 VS Code 中使用 gopls

简介 我一直是用 VS Code 作为 Go 语言的 IDE,使用的是官方的 Go 扩展,但在使用过程中发现有时候代码提示不够智能, 或者说基本没有提示. Go 扩展默认是使用大量的 Go 工具来提供各种功能的,每个工具提供某个方面的能力, 比如代码提示是依靠 gocode 的. 不过微软在开发 VS Code 过程中, 定义一种协议, 语言服务器协议,Language Server Protocol. 这可是个好东西, 如果你需要开发编辑器或 IDE,就不需要再为每种语言实现诸如自动完成, 代码提示等功能了,直接利用 语言服务器协议 就行了. gopls 就是官方的语言服务器, 当前处于 alpha 状态. 安装并设置 gopls 安装方式一 打开 VS Code 的设置, 搜索 go.u...阅读全文

博文 2019-09-03 20:02:42 帅气猫咪