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

golang 接口使用

先说结论:1、接口可以多层继承,只要最终的对象能实现接口的属性2、实现接口的类型子孙层只能使用接口方法,不能使用子孙类型的属性这两句话很绕,我们用一段代码说明下代码orm_test.go如下:package orm_testimport ( "fmt" "reflect" "testing")type Father interface { animals(animal string) string plants(plant string) string}type son struct {}//实现接口方法func (s *son) animals(animal string) string { return animal}func (s *son) plants(plant string) ...阅读全文

博文 2019-03-30 00:35:39 TsingCall

Go语言中隐式接口的冲突问题

Go语言中隐式接口的冲突问题 Go语言中采用的是隐式接口, 只要满足的接口的定义, 就可以当作接口使用. 比如内置的 error 接口: type error struct { Error() string } 隐式接口的好处有很多. 但我个人觉得最主要的一点就是不需要再去画祖宗八代的继承关系图了(松耦合). 但是隐式接口会带来冲突问题. 简单来说, 我也想定义一个自己的 MyError 接口, 里面也有一个 Error() string 方法: type MyError struct { Error() string } 但是我希望 MyError 接口 和 error 接口 是不同的类型 (不能相互转换). 当然, 在 Go语言中 MyError 接口 和 error 接口 是等价的, ...阅读全文

博文 2015-05-19 14:00:05 chai2010

Golang计算MD5

Golang计算MD5 1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密。这些学术 解释都不用管它,反正就是一群数学家老爷爷通过各种证明得到的一种方法,用这种方法加密 过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。既然加密者自己 都无法解密,那这乖僻的加密算法有个毛用阿?哪些场景需要这种有去无回的加密方式呢? 这里先了解下单向加密的特征: 首先,不可解密性在上面已经提到了,目的就是掩藏明文。其次单向加密算法的另外两个特征 使得它更接地气,第一是任意两段明文数据,加密以后的密文不能是相同的; 第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。这样当我们需要表征一段 唯一的内容,但是有不想别人知道该段内容时或者仅仅是为一个内容...阅读全文

博文 2014-10-09 16:00:03 cz_it

用Go语言写HTTP中间件

本文由 伯乐在线 - Codefor 翻译。未经许可,禁止转载!英文出处:justinas。欢迎加入翻译小组。 在web开发过程中,中间件一般是指应用程序中封装原始信息,添加额外功能的组件。不知道为什么,中间件通常是一种不太受欢迎的概念。但我认为它棒极了。 其一,一个好的中间件拥有单一的功能,可插拔并且是自我约束的。这就意味着你可以在接口的层次上把它放到应用中,并能很好的工作。中间件并不影响你的代码风格,它也不是一个框架,仅仅是你处理请求流程中额外一层罢了。根本不需要重写代码:如果你想用一个中间件,就把它加上应用中;如果你改变主意了,去掉就好了。就这么简单。 来看看Go,HTTP中间件非常流行,标准库中也是这样。或许咋看上去并不明显,net/http包中的函数,如StripPrefix 和T...阅读全文

博文 2015-03-25 20:44:36 伯乐在线

golang之web

大多数编程语言之上的 Web 开发框架都是遵照 MVC 的处理流程去开发 Web 应用:Model 部分封装数据,Controller 部分处理业务逻辑,View 部分植入变量填充模板页面。而大部分 Web 框架关于 MVC 的三部分都是在 Server-side 处理,比如对 View 部分的处理都是在 Server-side 通过程序动态对模版变量求值后再拼接组装成 HTML 页面输出给浏览器去呈现。而 Go 开发 Web 应用,并不依赖任何 Web 开发框架,用内置的标准库就可以轻而易举地实现:比如使用 net/http 标准库就可以数行代码构建一个完整的 Web 骨架应用;再比如,通过关键字 struct 封装一个数据结构就可以表达原本 MVC 框架中需要用厚重的 ORM (Obje...阅读全文

博文 2014-10-04 19:27:27 陈好

golang import详解

import 机制 golang_import_机制.png sugar import( "time" //普通写法 . "fmt" //使用此包内的成员时不带fmt前缀 j "encoding/json" //json包重命名 _ "net" //仅执行net包中的init方法,不能调用该包成员 ) 使用规范 不要使用相对路径引入包(以GOPATH/src作为根目录) 引入包顺序遵循 标准库,项目包,第三方包 第三方包按命名顺序 eg: import( "fmt" "time" //标准库 "controllers/doctor" "controllers/student" //项目包 "models/person" //项目包 "github.com/garyburd/redigo/re...阅读全文

博文 2018-09-30 01:34:40 火头陀

golang反射理解

### golang反射理论基础 ### 反射就是动态的获取对象的信息,动态的执行对象的方法,为什么不直接获取对象的属性呢?为什么不直接调用他的方法呢?因为有时候不知道这个对象具体是什么类型,具体有哪些属性和方法。 golang中的反射和类型息息相关,所以在了解反射之前一定要对golang的类型有一定的认识,golang的反射是对接口变量的动态类型(type)和动态值(value)相关的操作,所以golang的反射只和接口变量有关,反射是建立在接口变量基础之上的,在此可能会有这样的疑问,任何一个类型的变量都可以通过反射进行操作呀!比如int类型变量,我可以通过反射修改这个变量的值。是的,但这其实和反射只和接口变量有关并不冲突,因为接口变量也包括空接口变量,如:var i interface{...阅读全文

博文 2019-05-12 21:15:00 LeeYubo

golang类型断言

golang的接口类型是golang的一大神器,下面我们来看看如何将接口类型转换成其他的类型 package tests import ( "fmt" "github.com/go-xorm/core" "github.com/go-xorm/xorm" _ "github.com/lunny/godbc" "os" "testing" "zks.com/business/module" ) var DBE *xorm.Engine func Test_InitDb(t *testing.T) { dbhost := "localhost\\MSSQLSERVER2008" dbname := "FoodSafety_KF" dbuser := "sa" dbpwd := "sasa" va...阅读全文

博文 2015-06-17 20:01:42 niechaoya

go语言标准库分析之os

golang讲解(go语言)标准库分析之os(7) 今天我们继续讲golang标准库的os包,依然是没有废话直接来 (1)(f *File).Name()这个函数是返回文件的名称,函数原型func (f *File) Name() string要文件的指针操作,返回字符串,感觉比较鸡助的方法底层实现 func (f *File) Name() string { return f.name } import ( "fmt" "os" )func main() { f, _ := os.Open("1.go") fmt.Println(f.Name()) //输出1.go } (2)(f File).Read()这个是函数的指针来操作的,属于FIlE的method,函数原型func (f *Fi...阅读全文

博文 2014-10-04 19:26:24 kuerant

GO - HelloWorld

本节将通过Hello World带领大家进入Go的世界,并由此介绍Go代码的主要结构、部分关键字和包的一些特性。为阅读后面的打下基础。 1. Let's go 咱们以往学习任何程序都会以Hello World作为第一个实例,在此咱们不按常理出牌,针对Go语言,我们的第一个程序以Let's go开始。(其实是换汤不换药哈!!)。 代码如下: 控制台的输出结果为:Let's go! 第2行:定义此代码所属的包名,在一个项目中有且只有一个名为main的包。(最佳实践:包名由简短且小写的字母构成) 包名为源代码文件所属的目录名。即同一包的所有的代码文件必须放在以此包名为目录名的目录下。在包的定义声明中只能有一个包名,这与Java、C#是不一样的(注:在Java中的包定义是从根依次引入的) 第5~7行...阅读全文

博文 2014-10-10 20:00:00 aaron_ye

Go标准库的中文版dash文档

很多新手朋友学习 go 语言少不了要学习 go 的标准库,部分同学可能英语不太好,看标准库比较吃力。经常访问 studygolang 的标准库中文版来回切换。所以为了方便制作了 dash 的 go 标准库中文版。大感谢 GCTT 翻译组的同学们的翻译。 **NOTICE** Dash 只有在macos上可以用哦 [github](https://github.com/taigacute/GoDoc-CN...阅读全文

博文 2019-04-14 11:18:02 taigacute

Mac下进行golang的交叉编译

由于golang的出身,对于linux的支持是最好的,相应来说,Mac的支持也很不错,对windows的支持是最差的。 进行交叉编译最好是从源码开始编译,而且在交叉编译中是不支持cgo的,这点请注意。 1. 获得golang的源码 这个当然是从官方网站下载了,只是golang是google推出的语言,所以需要翻个墙。我下载了1.4.2的golang的tar包,然后解压。虽说只需配置正确,可以放到任意位置,但还是推荐放到/usr/local目录下。请注意,这个时候还没有编译工具,不仅交叉编译不行,本地编译都是不行的。 设置GOROOT环境变量,PATH里面增加路径 2. 编译本机的工具链 cd $GOROOT\src ./make/bash 编译之后就能看到/usr/local/go目录下多了...阅读全文

博文 2015-11-11 13:00:01 sakulafly

Go语言实战_自定义OrderedMap

一、 自定义OrderedMap 在Go语言中,字典类型的元素值的迭代顺序是不确定的。想要实现有固定顺序的Map就需要让自定义的 OrderedMap 实现 sort.Interface 接口类型。该接口类型中的方法 Len 、Less 和 Swap 的含义分别是获取元素的数量、比较相邻元素的大小以及交换它们的位置。 1.定义 OrderedMap 想要实现自定义一个有序字典类型,仅仅基于字典类型是不够的,需要使用一个元素有序的数据类型值作为辅助。如下声明了一个名为 OrderedMap 的结构体类型: type OrderedMap struct { keys []interface{} m map[interface{}]interface{} } 如上在 OrderedMap 类型中,...阅读全文

博文 2016-08-18 01:00:04 u012855229

golang之cgo---调用C/C++动态库函数

之前说过golang调用C代码的方式可以通过cgo或者是swig,而cgo是不能使用C++相关的东西的,比如标准库或者C++的面向对象特性。怎么办,将c++的功能函数封装成C接口,然后编译成动态库,或者是功能较为简单的可以直接嵌入到go源文件中。   cgo的使用是在linux平台上,在windows平台上可以配置交叉编译器。 动态库头文件:myfuns.h #pragma once #include #include #include #include void fun1(); void fun2(int a); int func3(void **b); // others 动态库名:myfuns.so...阅读全文

博文 2016-09-03 08:00:05 FreeApe

Go语言缺陷

我为什么放弃Go语言 目录(?)[+] 我为什么放弃Go语言 有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。 开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论。但是我有足够详实的客观的论据,用以支撑这个看似主观的结论。 文末附有本文更新日志。 第0节:我的Go语言经历 先说说我的经历吧,以避免被无缘无故地当作Go语言的低级黑。 2009年底,Go语言(golang)第一个公开版本发布,笼罩着“Google公司制造”的光环,吸引了许多慕名而来的尝鲜者,我(Liigo)也身居其中,笼统的看了一些G...阅读全文

博文 2016-04-29 11:00:04 justdoithai

GO语言标准库概览

Go标准库包含了大量包,提供了丰富广泛的功能特性。这里提供了概览仅仅是有选择性的且非常简单。本文发表后,标准库的内容还可能继续增加,因此 建议大家最好是通过在线查阅库API或使用godoc(包含在Go发布包中)来获取最新信息以及全面了解每个包所具备的功能。 exp包(试验性的)是那些未来可能被加入标准库的包起步的地方,因此除非你想参加这些包的开发(通过测试、讨论、提交补丁),否则不应该使用其 下面的包。exp包通常只存在于从Google Go源码树上签出的源码包中,但一般不会包含在预构建好的包中。其他包可以放心使用,虽然在写下本文的这一刻,很多包依旧不够完整。 Archive(归档)和Compression(压缩)包 Go支持读写tarball和.zip文件。与此相关的包为archive/t...阅读全文

博文 2015-12-03 23:00:03 u011032846

Docker系列之一:入门介绍

Docker简介: Docker是DotCloud开源的、可以将任何应用包装在Linux container中运行的工具。2013年3月发布首个版本,当前最新版本为1.3。Docker基于Go语言开发,代码托管在Github上,目前超过10000次commit。基于Docker的沙箱环境可以实现轻型隔离,多个容器间不会相互影响;Docker可以自动化打包和部署任何应用,方便地创建一个轻量级私有PaaS云,也可以用于搭建开发测试环境以及部署可扩展的web应用等。 Docker vs VM 从下图可以看出,VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行...阅读全文

一看就懂系列之Golang的接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011957758/article/details/81150622 https://blog.csdn.net/u011957758/article/details/81150622 前言 接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。 是的。Golang中也有接口这玩意儿。 本文将以通俗易懂的方式,说清楚Golang的接口。 10s后,以下知识点即将到达战场: 1.为什么需要接口? 2.接口是什么?如何定义? 3.接口实战初体验 4.如何测试是否已实现该接口? 5.空接口&类型断言 6.接口零值 7.一个类型实现多个接口 8.指针与值类型实现接口的区别 9.接口嵌套 正文...阅读全文

博文 2019-04-29 07:31:35 u011957758

golang语言

最近,笔者开始使用golang语言。感觉golang是一门很有前途的语言。这不仅仅是因为golang是由大牛们打造出来的。更因为golang语言的特性。最近文章会开始介绍golang语言。 golang历史 2007年,谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。 2009年11月10日,Go语言以开放源代码的方式向全球发布。 2011年3月16日,Go语言的第一个稳定(stable)版本r56发布。 2012年3月28日,Go语言的第一个正式版本Go1发布。 2013年4月04日,Go语言的第一个Go 1.1beta1测试版发布。 2013年4月08日,Go语言的第二个Go 1.1beta2测试版发...阅读全文

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

Go1.5 改进摘要

Go1.5 改进简介 1. 纯Go(+少量汇编)实现 runtime 和 编译器 2. 改进 垃圾回收器, 支持并发 (有个指标好像是 停顿在 10 毫秒以内). 3. GOMAXPROCS默认值改为 CPU 核数 4. internal限制规则推广到第三方包 (之前只有 std 包启用) 5. 增加 vendor 支持, 基本解决 第三方库的依赖问题和版本问题 6. 增加 trace 命令, 更友好的剖析程序运行状态 7. 增加 go doc 命令 语法变化 增加 map 字面量. 以前的代码: m :=map[Point]string{ Point{29.935523, 52.891566}: "Persepolis", Point{-25.352594, 131.034361}:"Ul...阅读全文

博文 2015-07-26 19:00:01 codemanship

打消数据上云的最大顾虑 众安保险为阿里云用户推出数据安全险

![云上安全(小图).jpg](http://studygolang.qiniudn.com/160127/758ba52c0f12b6559909386320258fe5.jpg) 自保险于1384年在佛罗伦萨诞生以来,它对生活的影响从未像本世纪这么大。 2016年1月中旬,阿里云市场上线第一份数据保险——由众安保险提供的数据安全险,为企业虚拟资产数据的安全承保。用户投保后,一旦发生因黑客入侵引发的数据泄露,将由众安保险公司提供最高100万元的现金赔偿,最大限度降低客户损失。这是国内第一份专保黑客盗取云计算数据的保险,意味着DT时代数据的价值正在被各方认可,而保险的推出也将推动企业更广泛地使用云计算。 DT时代,数据已成企业核心资产,而数据的安全则涉及多个环节。 在...阅读全文

Go如何处理zip中的中文文件名

Go的标准库已经自带了zip的库. 不过zip包在处理内部文件名时, 默认是utf8编码的. 对于Windows中文用户, 生成和读取zip内部文件名默认是GBK编码的. 因此, 在处理涉及GBK的文件名时需要做一个转换. Go语言官方的 go.text 子标准库已经支持各种编码, 下面是utf8转GBK的函数: import "golang.org/x/text/encoding/simplifiedchinese" func utf8ToGBK(text string) (string, error) { dst := make([]byte, len(text)*2) tr := simplifiedchinese.GB18030.NewEncoder() nDst, _, err :...阅读全文

博文 2015-05-18 12:38:08 chai2010

python requests 基础学习

Requests是用Python语言(http://www.maiziedu.com/course/python/)编写的。在Python标准库中的urllib2模块为我们所需要的大多数http功能,但是它的 API 不友好。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务,所以学习reuqests模块,比较简洁好用(以后慢慢会学习scapy,更强大的库),安装就不用说了      1 导入模块      >>> import requests      2 直观感受一下发送请求的简洁      >>> r = requests.get('your url')      >>> r = requests.post('you...阅读全文

exec.Command管道实现循环输入

目前有一个程序需要启用另外一个code.exe程序来做转码处理 此程序运行后是一个死循环的,就等待输入按回车后就返回相应的解码数据 现在用exec.Command启动程序后就只能使用管道输入一次,代码如下 ``` cmd := exec.Command("./code.exe") var pipIn,pipOut bytes.Buffer cmd.Stdin = &pipIn cmd.Stdout = &pipOut cmd.Run() pipIn.WriteString(fmt.Sprintf("%s\n", "35063812556aa2cdd6d1cbd")) time.Sleep(time.Millisecond * 500) fmt.Prin...阅读全文

Golang接口interface的使用

关键字interface 如果一个结构体绑定的方法包含接口的所有方法,即认为实现了该接口 将对象赋值给接口时,会发生拷贝,而接口的存储是指向这个复制的指针,复制的无法修改原来状态,也无法获取指针 type CallBack interface{ getName() string } type User struct{ name string } func (user User) getName()string{ return user.name } user:=User{} f.println(user.getName()) 上面声明了一个CallBack,结构体User绑定了一个getName的方法,跟CallBack接口所声明的接口名称一样,而且实现了CallBack接口的所有方法(他现...阅读全文

博文 2017-10-10 06:04:56 Link_Biao

go学习网站

是国外的go.dev的本土化网站 https://golangclub.com 中国社区的不错的网站,可以下载源码包可以看到翻译的书籍,还有标准库包的可以查阅 https://studygolang.com/ studygolang类似 https://www.golangtc.com/ 也是同上只是不够全面的 https://gocn.vip/m/ 官方中文网,很多东西嗯都可以过得 https://golang.google.c...阅读全文

博文 2020-01-01 15:32:39 世界之树weight

channel关闭的注意事项

关闭不再需要使用的 channel 并不是必须的。跟其他资源比如打开的文件、socket 连接不一样,这类资源使用完后不关闭后会造成句柄泄露,channel 使用完后不关闭也没有关系,channel 没有被任何协程用到后最终会被 GC 回收。关闭 channel 一般是用来通知其他协程某个任务已经完成了。golang 也没有直接提供判断 channel 是否已经关闭的接口,虽然可以用其他不太优雅的方式自己实现一个: func isClosed(ch chan int) bool { select { case <-ch: return true default: } return false } 不过实现一个这样的接口也没什么必要。因为就算通过 isClosed() 得到当前 channel...阅读全文

博文 2018-12-12 17:34:46 bocsoft

Go语言类型switch

switch还可以用于判断变量类型。使用方式为T.(type),即在变量后加上.(type)。见代码: package main import ( "fmt" ) func main() { var a interface{} a = "abc" switch t := a.(type) { case string: fmt.Printf("string %s\n", t) case int: fmt.Printf("int %d\n", t) default: fmt.Printf("unexpected type %T", t) } } 输出结果为: string abc 如果将上面的: var a interface{} a = "abc" 这两句,合成一句: a := "abc" 编...阅读全文

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

发现标准库也有内存不回收的问题

写了一个从视频中截取预览图的工具, 使用 go 1.7 用这个库: github.com/opennota/screengen 测试时发现内存一直涨,根本就停不下来,最后能服机器搞死,而且无论等多久内存占用也不会降下来 开始以为是第三方库的问题,最后测试发现了点不一样的东西, 具体如下: ``` top (pprof) top 18412.15MB of 18506.45MB total (99.49%) Dropped 21 nodes (cum <= 92.53MB) flat flat% sum% cum cum% 18411.15MB 99.49% 99.49% 18411.65MB 99.49...阅读全文

30分钟上手GO语言--方法和接口

方法和接口 这章讲如何为类型定义方法;如何定义接口;以及如何将所有内容贯通起来。 方法:Go 没有类,但可以在结构体类型上定义方法。 package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v := &Vertex{3, 4} fmt.Println(v.Abs()) } 可以对包中的 任意 类型定义任意方法,而不仅仅是针对结构体。但是,不能对来自其他包的类型或基础类型定义方法...阅读全文

为什么老男孩教育Python这么火?

老男孩教育分享《Python全栈9期全套视频》,内容涵盖:Python基础、并发编程、前端、vue.js、MySQL、Django、Flask、Tornado、rest API、分布式爬虫、Linux架构、区块链、数据分析、人工智能等,感兴趣的请加微信号:life_kl0517,备注:9期 现在信息更新的非常快速,又迎来了大数据的时代, 各行各业如果不与时俱进,都将面临优胜劣汰,知识是不断的更新的,只有一技之长,才能立于不败之地。 学习Python编程语言,是大家走入编程世界的理想选择,在初期入门阶段就可以自己动手做一些实用的小项目,这样会极大的增进我们学习编程的热情。 很多朋友都是零基础,没有过编程的经验或者一知半解,在选择编程语言的时候面临着众多选择,不知道哪种语言才是...阅读全文

【本网站】Go文档开启比官方更多强大功能

【本网站】Go文档:http://docs.studygolang.com 开启了比Go官方更多强大功能。 1、开启 内部调用图。可以查看某个函数或方法有哪些标准库调用了; 2、可以知道某个接口,标准库中有哪些类型实现了它; 3、可以知道某个类型,实现了哪些接口,可以看到它的方法集; 4、鼠标停留在源码上,可以看到定义的提示信息等; 5、开启了 play 功能,可以运行代码,而且,标准库中的例子也可以直接运行。 这些主要是启用了 godoc 中的 analysis。详细文档见:http://docs.studygolang.com/lib/godoc/analysis/help.htm...阅读全文

想用go实现一个按着设置的概率产生一定范围内的随机数,请大牛指教

最近想实现一个带概率控制的随机数,描述如下: uint32 data。 data 在下列范围随机: 0~15(出现的概率为50%),16~31(出现的概率为20%),32~64(出现的概率为20%),64~128(出现的概率为10%) 请问如何方便地实现? 有没有标准库的package支持呢? 谢谢...阅读全文

golang接口请求方法

1.方法1:map[persistent_code: errcode:0 errmsg:ok unionid:0hY5m7YiPiSy1tmdVsiPDaItgiEiE openid:yseuqjbnfunc GetInfo(token string)(){baseurl := "https://oapi.dingtalk.com/sns/getuserinfo?sns_token="accessUrl := baseurl + tokenresponseToken,err:= http.Get(accessUrl)if err != nil{fmt.Println(err)}defer responseToken.Body.Close()//当获取到响应体时,客户端必须手动关闭链接json...阅读全文

博文 2019-07-18 23:05:14 luoguo

Go 1.8 正式发布,编译时间比 Go 1.7 提高约 15%

go语言交流群185521558,欢迎你的加入:点击链接加入群【Golang技术交流】:https://jq.qq.com/?_wv=1027&k=43awu7x 今天Go 团队很高兴地宣布Go 1.8发布了。现已提供下载。整个标准库有了显著的性能提升和变化。该版本主要的更新内容如下: Go 1.7中为64位x86引入的编译器后端现在用于所有体系结构,这些体系结构将会有显著的性能改进。例如,我们的基准程序所需的CPU时间在32位ARM系统上减少了20-30%。在此版本中,64位x86系统还有一些性能改进,编译器和链接器更快了,编译时间应该比Go 1.7提高约15%。但是在这一领域还有很长的路要走:我们希望在未来版本中实现更快的编译速度。 垃圾收集暂停时间明显更短,通常在10...阅读全文

golang断言

类型断言 type assertion 和上节的类型转换不同,类型断言是将接口类型的值x,转换成类型T。 格式为: x.(T) v := x.(T) v, ok := x.(T) 类型断言的必要条件是x是接口类型,非接口类型的x不能做类型断言: var i int = 10 v := i.(int) //错误 T可以是非接口类型,如果想断言合法,则T应该实现x的接口。 T也可以是接口,则x的动态类型也应该实现接口T。 var x interface{} = 7 // x 的动态类型为int, 值为 7 i := x.(int) // i 的类型为 int, 值为 7 type I interface { m() } var y I s := y.(string) // 非法: string ...阅读全文

博文 2020-02-13 09:32:48 哆啦在这A梦在哪

go语言标准库

像 fmt、os 等这样具有常用功能的内置包在 Go 语言中有 150 个以上,它们被称为标准库,大部分(一些底层的除外)内置于 Go 本身。完整列表可以在 Go Walker 查看。 unsafe: 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。 syscall-os-os/exec: os: 提供给我们一个平台无关性的操作系统功能接口,采用类Unix设计,隐藏了不同操作系统间差异,让不同的文件系统和操作系统对象表现一致。 os/exec: 提供我们运行外部操作系统命令和程序的方式。 syscall: 底层的外部包,提供了操作系统底层调用的基本接口。 通过一个 Go 程序让Linux重启来体现它的能力。 package main i...阅读全文

博文 2019-08-10 12:34:16 ChenQuan

Go 语言 接口(Interface)

What is Interface type in Go ? GoLang官网language specification文档对interface type的概念说明如下: An interface type specifies a method set called its interface. A variable of interface type can store a value of any type with a method set that is any superset of the interface. Such a type is said to implement the interface. The value of an uninitialized variab...阅读全文

博文 2018-08-18 23:34:51 小杰的快乐时光

Golang的百科全书--the way to go

比较零乱的学了一段时间的golang,一直觉得条理化的信息太少。 最近看到《the way to go》,才发现这就是我所需要的营养大餐,以后再找一本Go的标准库详解就完美了。 本书居然有中文版@无闻 @unkown,这是真正的活雷锋,他还写了个Git服务器–Gogs,我已经在公司里给我个项目使用了。可惜中文版的进度有点慢,一般人等不及 好在此书英文版也不难看,示例代码足够多。另外,亚马逊上的书评也说此书的作者似乎不是以英文为第一母语的,所以里边的文笔不好,而这正好合适我等读者...阅读全文

博文 2014-10-04 19:26:28 max佩恩