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

在Golang中获取DNS记录

使用Golang获取域名的DNS记录, 包括A / CNAME等类型. 方案1: 官方net包 只举例获取CNAME类型的解析记录, 其他类型大同小异. func CNAME(src string) (dst string, err error) { dst, err = net.LookupCNAME(src) return } 官方net包调用的是系统API, 所以在不同的系统上可能有不同的结果, 我测试当一个域名的解析记录如下时, linux和windows返回的结果不一致. bysir.xyz. 297 IN CNAME blog.bysir.top. blog.bysir.top. 60 IN CNAME bysir.top. bysir.top. 60 IN A 78.178.2...阅读全文

博文 2019-05-27 19:34:39 bysir

golang语言中map的初始化及使用

// 先声明map var m1 map[string]string // 再使用make函数创建一个非nil的map,nil map不能赋值 m1 = make(map[string]string) // 最后给已声明的map赋值 m1["a"] = "aa" m1["b"] = "bb" // 直接创建 m2 := make(map[string]string) // 然后赋值 m2["a"] = "aa" m2["b"] = "bb" // 初始化 + 赋值一体化 m3 := map[string]string{ "a": "aa", "b": "bb", } // ========================================== // 查找键值是否存在 if v,...阅读全文

博文 2015-02-13 15:00:02 YanJiangbo

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

golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people...阅读全文

6 款最棒的 Go 语言 Web 框架简介

![](https://raw.githubusercontent.com/studygolang/gctt-images/master/top-6-web-frameworks-for-go-as-of-2017/twitter_status.jpg) https://twitter.com/ThePracticalDev/status/930878898245722112 如果你只是想写一个自己用的小网站,或许你不需要框架,但如果你是要开发一个投入生产运营的网站,那么你肯定会需要一个框架,而且是需要一个好的 Web 框架。 如果你已经掌握所有必要的知识和经验,你会冒险自己去重新开发所有的功能么?你有时间去找满足生产级别要求的库来用于开发么?另外,你确定这个库可以满足你后续所有的要求? 这...阅读全文

博文 2017-12-09 03:34:14 polaris

GO语言下载、安装、配置

一、Go语言下载 go语言官方下载地址:https://golang.org/dl/ 找到适合你系统的版本下载,本人下载的是windows版本。也可以下载Source自己更深层次研究go语言。 二、GO语言安装 下载完成之后,双击go1.6.windows-amd64.msi进行安装。 如果安装过程出现以下提示: 以管理员的身份运行cmd,找到go1.6.windows-amd64.msi所在的目录,并输入msiexec /i go1.6.windows-amd64.msi如下图(放在D盘根目录): 步骤一:双击运行安装程序 步骤二:点击Next,出现License 选择I accept the terms in the License Agreeement。 步骤三:点击Next,选择安装...阅读全文

博文 2016-02-25 03:00:02 zsy

[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

golang断言的使用(Type Assertion)

golang的语言中提供了断言的功能。golang中的所有程序都实现了interface{}的接口,这意味着,所有的类型如string,int,int64甚至是自定义的struct类型都就此拥有了interface{}的接口,这种做法和java中的Object类型比较类似。那么在一个数据通过func funcName(interface{})的方式传进来的时候,也就意味着这个参数被自动的转为interface{}的类型。 如以下的代码: func funcName(a interface{}) string { return string(a) } 编译器将会返回: cannot convert a (type interface{}) to type string: need type a...阅读全文

博文 2015-06-17 20:02:18 JonnyHsu

golang 使用 strings.Split 切割的注意

s := strings.Split("", "") fmt.Println(s, len(s)) s = strings.Split("abc,abc", "") fmt.Println(s, len(s)) s = strings.Split("", ",") fmt.Println(s, len(s)) s = strings.Split("abc,abc", ",") fmt.Println(s, len(s)) s = strings.Split("abc,abc", "|") fmt.Println(s, len(s)) fmt.Println(len("")) fmt.Println(len([]string{""})) str := "" fmt.Println(str[0]...阅读全文

博文 2014-10-04 19:27:43 984195889

Linux下安装Go环境

我的配置 VPS:VirMach $1.25一个月的VPS 系统:Ubuntu Server 16.04 LTS 64bit Minimal 可以自己创建个虚拟机安装一个Server版的Linux,或者在这里选一个共享主机 登录Linux Mac或Linux的用户可以用命令ssh root@xxx.xxx.xxx.xxx登录主机 Window的用户可以使用SecureCRT登录主机 虚拟机用户直接打开你的虚拟机 安装Go环境 Golang官网下载地址:https://golang.org/dl/ 打开官网下载地址选择对应的系统版本, 复制下载链接 这里我选择的是 go1.10.3.linux-amd64.tar.gz:https://dl.google.com/go/go1.10.3.lin...阅读全文

博文 2018-08-02 19:35:15 Mr_Leung

【玩转Golang】slice切片的操作——切片的追加、删除、插入等

一、一般操作 1,声明变量,go自动初始化为nil,长度:0,地址:0,nil func main(){ var ss []string; fmt.Printf("length:%v \taddr:%p \tisnil:%v",len(ss),ss, ss==nil) } --- Running... length:0 addr:0x0 isnil:true Success: process exited with code 0. 2,切片的追加,删除,插入操作 func main(){ var ss []string; fmt.Printf("[ local print ]\t:\t length:%v\taddr:%p\tisnil:%v\n",len(ss),ss, ss==nil) ...阅读全文

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

golang判断文件或文件夹是否存在

golang判断文件或文件夹是否存在的方法为使用os.Stat()函数返回的错误值进行判断: 如果返回的错误为nil,说明文件或文件夹存在如果返回的错误类型使用os.IsNotExist()判断为true,说明文件或文件夹不存在如果返回的错误为其它类型,则不确定是否在存在 func PathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err ...阅读全文

博文 2015-11-28 16:00:01 xielingyun

golang中net/http包用法

http包包含http客户端和服务端的实现,利用Get,Head,Post,以及PostForm实现HTTP或者HTTPS的请求. 当客户端使用完response body后必须使用close对其进行关闭.如下所示 resp, err := http.Get("http://example.com/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) // ... 变量: 以下错误是http server使用的 var ( ErrHeaderTooLong = &ProtocolError{"header too long"} ErrShortBo...阅读全文

博文 2015-03-26 03:00:01 msnsj

Go语言的三元表达式

三元表达式的介绍在这里: http://en.wikipedia.org/wiki/%3F: http://en.wikipedia.org/wiki/IIf Go语言明确不支持三元表达式,这里是相关的讨论: https://groups.google.com/d/msg/golang-nuts/dbyqx_LGUxM/tLFFSXSfOdQJ 官方FAQ的说明在这里: http://golang.org/doc/faq#Does_Go_have_a_ternary_form 官方FAQ推荐的做法是用 if 代替: if expr { n = trueVal } else { n = falseVal } 不过用 if 的问题是变量 n 有作用域问题. 我们需要在 if 之前先定义变量 n,...阅读全文

博文 2015-06-16 08:50:56 chai2010

Golang优秀开源项目汇总(持续更新。。。)

Golang优秀开源项目汇总(持续更新。。。) 我把这个汇总放在github上了, 后面更新也会在github上更新。 https://github.com/hackstoic/golang-open-source-projects 。 欢迎fork, star , watch, 提issue。 资料参考来源:http://studygolang.com/projects 监控系统 序号 名称 项目地址 简介 1 OpenFalcon http://github.com/open-falcon/of-release OpenFalcon是一款小米监控系统。功能:*数据采集免配置:agent自发现、支持Plugin、主动推送模式; *容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图...阅读全文

博文 2016-08-13 22:00:06 hackstoic

golang向上取整、向下取整和四舍五入

一、概述官方的math 包中提供了取整的方法,向上取整math.Ceil() ,向下取整math.Floor() 二、用法12345678910package mainimport ( "fmt" "math")func main(){ x := 1.1 fmt.Println(math.Ceil(x)) // 2 fmt.Println(math.Floor(x)) // 1} 要注意的是,取完整后返回的并不是真正的整数,而是float64 类型,所以如果需要int 类型的话需要手动转换。 2017-10-14追加:一个奇葩的四舍五入方法golang没有类似python的round()函数,搜了一下很多都非常复杂,最后看到了一个清新脱俗的:先+0.5,然后向下取整! 简单得难以置信,想想也...阅读全文

博文 2018-05-17 09:29:31 马谦的博客

Sublime Text3 + Golang搭建开发环境

1.安装git 因为golang是通过git来管理远程包的,所以我们首先要安装git,下载地址:http://www.git-scm.com/download/。 git安装比较简单,直接下一步即可(在Windows Explorer integration选项中将“Git Bash here”和“Git GUI here”打对勾),需要了解具体安装的可以看这里。 2.安装Golang 1) 首先到https://golang.org/dl/选择适合你系统的安装包,(墙内:http://golangtc.com/download)。 2)我这里选择的是:go1.4.2.windows-amd64.msi,下载完成安装到指定目录即可。我这里是(E:\Go)。 3)安装完成后环境变量已经自动设置...阅读全文

博文 2015-07-09 23:00:00 aqiang912

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

为什么80%的码农都做不了架构师?

一般来说技术团队的金字塔顶尖往往是技术最牛的人做架构师(或TL)。所以架构师在广大码农中的占比大概平均不到 20%。而架构师也可以分为初级、中级、高级,江湖上真正高水平的架构师就更少了。所以,80%码农干上许多年,还是做不了架构师,正在辛苦工作的程序员们,你有没有下面几种感觉?​① 我的工作就是按时完成领导交给我的任务,至于代码写的怎样,知道有改进空间,但没时间去改进,关键是领导也不给时间啊。② 我发现我的水平总是跟不上技术的进步,有太多想学的东西要学,Swoft用的人最近比较多啊,听说最近Swoole比较火,还有微服务,听说PHP又更新了……③ 我发现虽然我工作5年了,除了不停的Coding写业务代码,Ctrl+c和Ctrl+V更熟练了,但编码水平并没有提高,还是一个普通程序员,但有人已经...阅读全文

博文 2019-06-20 12:03:47 PHPsix

golang 使用 iota

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a = iota // a=0 const ( b = iota //b=0 c //c=1 ) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type Stere...阅读全文

博文 2015-01-16 18:00:01 ghj1976

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几大框架的优势和区别?

Martini、Beego、Revel 等等…… golang-china 讨论组的回答: 苏沛: 试用了一下 Martini , 感觉现在的一些第三方插件数量和质量并不是特别好,会有一些坑或者要自己写些中间件。 总体不如另外两个框架成熟。 我去年开始研究Go语言,不知不觉快有一年了。以前我研究php和nodejs,都是弱类型的解释性语言。想找一个编译型的强类型语言继续学习,就选中了新奇的Go语言。我只关注Web方面的应用,看了很多有兴趣的开源的Go Web框架,随便吐槽一下。 Fan Yang: 刚刚开始用Beego,也就是图它是中国人做的,有问题可能直接问作者什么的也方便些。 框架的对比。来自[Go语言的Web框架](http:/...阅读全文

golang 读写文件

1.读文件 package main import ( "bufio" "fmt" "io" "io/ioutil" "os" ) //读取文件需要经常进行错误检查,这个帮助方法可以精简下面的错误检查过程。 func check(e error) { if e != nil { panic(e) } } func main() { //也许大部分基本的文件读取任务是将文件内容读取到内存中。 dat, err := ioutil.ReadFile("/tmp/dat") check(err) fmt.Print(string(dat)) //你经常会想对于一个文件是怎么读并且读取到哪一部分进行更多的控制。对于这个任务,从使用 os.Open打开一个文件获取一个 os.File 值开始。 f, ...阅读全文

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

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的反射reflect深入理解和示例

[TOC] Golang的反射reflect深入理解和示例 【记录于2018年2月】 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的reflect包就是反射相关的,只要包含这个包就可以使用。 多插一句,Golang的gRPC也是通过反射实现的。 interface 和 反射 在讲反射之前,先来看看Golang关于类...阅读全文

博文 2018-02-04 18:10:59 掘金

golang的强制类型转换

golang是一种强类型语言,虽然在代码中经常看到这种写法,i:=10这其实这是编译器自动做了类型推断在编译期间。编译器会对数据进行类型检查。不同类型的数据不能赋值,不能在函数中传参。强类型语言有一些优势,很多的错误会在编译期间被检查出来,不想php和python等弱类型语言,很多错误只有运行到才能被发现。同样,强类型也有一些缺点,写代码的时候要考虑数据类型了,失去了一些灵活性。 言归正传,开始golang的类型转换问题 golang的类型转换和C/C++ java等语言的类型转换还有点区别 C/C++等语言有隐式类型转换,golang中没有 golang中的类型转换分强制类型转换和类型断言 在C/C++中 int main() { int a=5; float b=3.5; printf(...阅读全文

博文 2019-07-02 01:32:38 紫葡萄0

Go 语言 简明教程

1. 概述 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 2. 优缺点 2.1 优点 开源 编译性语言, 运行高速 语法简洁 并行处理封装 内存管理、数组安全 2.2 缺点 作为编译性语言调试不如脚本方便 在数据分析上没有脚本适用 对底层的控制没有基础语言灵活 3. 用途 常应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性...阅读全文

博文 2018-08-03 14:34:51 aside section ._1OhGeD

golang 中strconv包用法

本文转自Golove博客:http://www.cnblogs.com/golove/p/3262925.html strconv 包中的函数和方法 // atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) package main import ( "fmt" "strconv" ...阅读全文

博文 2015-10-16 15:00:31 chenbaoke

Go语言atomic原子操作

atomic是最轻量级的锁,在一些场景下直接使用atomic包还是很有效的。 下面内容摘秒自《GO并发编程实战》—— 原子操作: CAS操作的优势是,可以在不形成临界区和创建互斥量的情况下完成并发安全的值替换操作。 这可以大大的减少同步对程序性能的损耗。 当然,CAS操作也有劣势。在被操作值被频繁变更的情况下,CAS操作并不那么容易成功。 原子操作共有5种,即:增或减、比较并交换、载入、存储和交换 1. 增或减 被用于进行增或减的原子操作(以下简称原子增/减操作)的函数名称都以“Add”为前缀,并后跟针对的具体类型的名称。 不过,由于atomic.AddUint32函数和atomic.AddUint64函数的第二个参数的类型分别是uint32和uint64,所以我们无法通过传递一个负的数值来...阅读全文

博文 2015-06-17 20:12:43 xcltapestry

Golang sync.WaitGroup的用法

0x01 介绍经常会看到以下了代码: 12345678910111213package mainimport ( "fmt" "time")func main(){ for i := 0; i < 100 ; i++{ go fmt.Println(i) } time.Sleep(time.Second)} 主线程为了等待goroutine都运行完毕,不得不在程序的末尾使用time.Sleep() 来睡眠一段时间,等待其他线程充分运行。对于简单的代码,100个for循环可以在1秒之内运行完毕,time.Sleep() 也可以达到想要的效果。 但是对于实际生活的大多数场景来说,1秒是不够的,并且大部分时候我们都无法预知for循环内代码运行时间的长短。这时候就不能使用time.Sleep() 来...阅读全文

博文 2018-05-17 09:54:29 马谦的博客

Windows下搭建go语言开发环境 以及 开发IDE (附下载链接)

1.下载 并且 安装 Go安装包 =========================================================== 在CSDN上传了我的版本,供大家下载: =========================================================== go1.2.windows-386.msi : http://download.csdn.net/detail/shuideyidi/7718563 go1.2.1.windows-amd64.msi: http://download.csdn.net/detail/shuideyidi/7719735 go1.2.1.darwin-amd64-osx10.8.pkg:http://...阅读全文

博文 2014-10-04 19:25:56 shuideyidi

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

golang test测试使用

1.创建测试文件夹mysql,文件夹下的go文件的package必须与文件夹名一致(不然会识别不到) 2.创建需要测试的文件mysql.go(使用github.com/go-sql-driver/mysql包) package mysql import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func findByPk(pk int) int { var num int = 0 db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/plugin_master?charset=utf8") if err != nil { panic(err.Error()) } def...阅读全文

博文 2015-03-06 03:00:16 benlightning

golang 高效字符串拼接

以下内容摘自许世伟《go语言程序设计》: 连接字符串使用" + "或者使用slice拼接,"这2个转换都不是无代价的" 虽然方便,但是使用+=操作符并不是在一个循环中往字符串末尾追加字符串最有效的方式,一个有效的方式是准备好一个字符串切片([]string),然后使用strings.Join()函数一次性将所有字符串串联起来。但是在go中还有一个更好的方法,其原理类似于java中的stringBuilder package main import ( "bytes" "fmt" ) func main() { var buffer bytes.Buffer //Buffer是一个实现了读写方法的可变大小的字节缓冲 for { if piece, ok := getNextString(); ...阅读全文

博文 2015-06-17 20:04:00 u012210379

golang 中fmt用法

fmt 包中的函数和方法 本文转自Golang学习-fmt包: http://www.cnblogs.com/golove/p/3286303.html // format.go ------------------------------------------------------------ // Fprintf 将参数列表 a 填写到格式字符串 format 的占位符中 // 并将填写后的结果写入 w 中,返回写入的字节数 func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) // Printf 将参数列表 a 填写到格式字符串 format 的占位符中 // 并将填写后的结果写入...阅读全文

博文 2014-10-10 15:00:01 chenbaoke

golang url解析

package main import "fmt" import "net/url" import "strings" func main() { //我们将解析这个 URL 示例,它包含了一个 scheme,认证信息,主机名,端口,路径,查询参数和片段。 s := "postgres://user:pass@host.com:5432/path?k=v#f" //解析这个 URL 并确保解析没有出错。 u, err := url.Parse(s) if err != nil { panic(err) } //直接访问 scheme。 fmt.Println(u.Scheme) //User 包含了所有的认证信息,这里调用 Username和 Password 来获取独立值。 fmt.Pri...阅读全文

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

使用 beego 搭建 web 应用之一

介绍 你是一个从PHP,Python,Ruby等动态语言转移到Go的web应用开发人员吗?想知道怎样使用Go开发基于web的应用程序吗?你想要知道怎样使用类似于已知的框架的方式进行开发,在那儿你能重复的利用已知的知识? 如果是这样,那么你可能已经做了一些搜索,无论是在谷歌,StackOverflow的或其他网站,以寻求一个框架来帮助你;你可能已经看到了有许多可能的选择,包括Beego,Martini和Gorilla,另外还有net/http包。 这四个当中,我尝试的最多的就是Beego。我认为,它的功能十分的丰富,但是不太复杂,因此上手是相对较快的。 地狱星星翻译于 3 个月 前 0人顶 顶 翻译的不错哦! Beego不是一般的web开发包。它构建在大量已存在的Go之上,提供了许多的功能,以...阅读全文

博文 2014-10-04 19:25:56 中奖啦, 地狱星星, --zxp

Golang中的error类型

Golang中的error类型 error类型本身就是一个预定义好的接口,里面定义了一个method type error interface { Error() string } 生成一个新的error并返回 一般有以下几种处理方式: package main import ( "errors" "fmt" ) type Customerror struct { infoa string infob string Err error } func (cerr Customerror) Error() string { errorinfo := fmt.Sprintf("infoa : %s , infob : %s , original err info : %s ", cerr.info...阅读全文

博文 2015-06-27 03:00:00 Goden

golang中发送http请求的几种常见情况

整理一下golang中各种http的发送方式 最初的一些项目中,很多的地方都使用到了golang发送http请求,之后再对请求收到的结果进行一些处理,所用到的模式也比较固定,这里整理一下集中http的发送方式,先记录这么多,再一点一点添加。 最基本的场景 方式一 使用http.Newrequest 先生成http.client -> 再生成 http.request -> 之后提交请求:client.Do(request) -> 处理返回结果,每一步的过程都可以设置一些具体的参数,下面是一个最朴素最基本的例子: //question ???将stdout重定向为response信息??? package main import ( "fmt" "io" "net/http" "os" ) f...阅读全文

博文 2015-07-20 03:00:00 Goden

golang实现RPC的几种方式

什么是RPC 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。维基百科:远程过程调用 用通俗易懂的语言描述就是:RPC允许跨机器、跨语言调用计算机程序方法。打个比方,我用go语言写了个获取用户信息的方法getUserInfo,并把go程序部署在阿里云服务器上面,现在我有一个部署在腾讯云上面的php项目,需要调用golang的getUserInfo方法获取用户信息,php跨机器调用go方法的过程就是RPC调用。 golang中如何实现RPC 在golang中实现RPC非...阅读全文

博文 2018-08-21 01:34:46 豆瓣奶茶

golang time 时间的加减法

time包中的Add和Sub的用法,Add用于计算某个时间之前和之后的时间点,Sub用于计算两个时间差 package main import ( "fmt" "strings" "time" ) func main() { // Add 时间相加 now := time.Now() // ParseDuration parses a duration string. // A duration string is a possibly signed sequence of decimal numbers, // each with optional fraction and a unit suffix, // such as "300ms", "-1.5h" or "2h45m". // ...阅读全文

博文 2016-11-02 10:00:03 CodyGuo

golang学习之旅:使用go语言操作mysql数据库

1.下载并导入数据库驱动包 官方不提供实现,先下载第三方的实现,点击这里查看各种各样的实现版本。这里选择了Go-MySQL-Driver这个实现。地址是:https://github.com/go-sql-driver/mysql/。 然后按照里面的说明下载驱动包: $ go get github.com/go-sql-driver/mysql 最后导入包即可: import "database/sql" import _ "github.com/go-sql-driver/mysql" 2.连接至数据库 db, err := sql.Open("mysql", "root:root@/uestcbook") 3.执行查询 (1)Exec result, err := db.Exec( "I...阅读全文

博文 2015-05-07 03:00:00 michaellau

golang 中regexp包用法

本文转自Golove博客:http://www.cnblogs.com/golove/p/3270918.html regexp 包中的函数和方法 // regexp.go ------------------------------------------------------------ // 判断在 b 中能否找到正则表达式 pattern 所匹配的子串 // pattern:要查找的正则表达式 // b:要在其中进行查找的 []byte // matched:返回是否找到匹配项 // err:返回查找过程中遇到的任何错误 // 此函数通过调用 Regexp 的方法实现 func Match(pattern string, b []byte) (matched bool, err e...阅读全文

博文 2014-11-10 22:00:02 chenbaoke

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

Golang flag包使用详解(一)

概述 flag包提供了一系列解析命令行参数的功能接口 命令行语法 命令行语法主要有以下几种形式 -flag //只支持bool类型 -flag=x -flag x //只支持非bool类型 以上语法对于一个或两个‘-’号,效果是一样的,但是要注意对于第三种情况,只支持非bool类型,原因是碰到如下情况时 cmd -x * *为0,false有可能表示一个文件名或文件,也有可能表示x标签的值为0或false,会产生二义性,因此规定第三种只支持非bool类型。对于整形flag,合法的值可以为1234, 0664,0x1234或负数等。对于布尔型flag,可以为1, 0, t, f, T, F,true, false, TRUE, FALSE, True, False等 命令行参数解析方法 使用f...阅读全文

博文 2015-06-17 20:03:05 thulpf

golang的net包

package net import "net" net包提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket。 虽然本包提供了对网络原语的访问,大部分使用者只需要Dial、Listen和Accept函数提供的基本接口;以及相关的Conn和Listener接口。crypto/tls包提供了相同的接口和类似的Dial和Listen函数。 Dial函数和服务端建立连接: conn, err := net.Dial("tcp", "google.com:80") if err != nil { // handle error } fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n") status, err := bufio.Ne...阅读全文

博文 2014-10-04 19:26:40 刘地

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

golang中os包用法

os包中实现了平台无关的接口,设计向Unix风格,但是错误处理是go风格,当os包使用时,如果失败之后返回错误类型而不是错误数量. os包中函数设计方式和Unix类似,下面来看一下. func Chdir(dir string) error //chdir将当前工作目录更改为dir目录. func Getwd() (dir string, err error) //获取当前目录,类似linux中的pwd func Chmod(name string, mode FileMode) error //更改文件的权限(读写执行,分为三类:all-group-owner) func Chown(name string, uid, gid int) error //更改文件拥有者owner func ...阅读全文

博文 2015-10-18 12:00:05 chenbaoke