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

图解Knative核心组件Serving基础设计

最近闲下来,打算把Knative的核心组件Serving给学习下,会继续采用k8s源码学习的方式,管中窥豹以小击大,学习serving的主要目标: 可观测性基础设施、自动伸缩、流量管理等核心组件的设计与实现,今天先简单臆测下,感兴趣的同学, 一起来学习吧 1. 基于云原生的单体应用构建 大多数公司的服务可能都已经经过单体、SOA演进到了当下流行的微服务架构,微服务给我们带来了独立演进、扩容、协作、数据自治等便利的背景下,也带来了诸如稳定性保障、维护、服务治理等实际的问题,我们今天来一起来回归单体,比如我们要新开一个业务,新上一个小的模块这个场景,在云原生的场景下,是如何玩的 1.1 云原生下的单体应用 云原生有很多大佬有很多的解释,我就简单理解成是基于云构建而来,可以使用云上所有已知的现有的...阅读全文

博文 2020-04-24 15:33:04 仔仔

2018-12-26晚间日记

天气:小雨 任务清单 后端框架代码 过认证方案。 习惯养成类:日更800+字 && writingTime >=1h 100% 习惯养成类:单词 30个,复习优先,你的目的是为了记住单词,而不是看到更多的单词。同理,记住单词也不是目的,而是使用英文阅读理解,沟通交流的手段。所以每个单词至少要熟悉一个例句。--100% 周目标·完成进度 golang 1K 众病之王---癌症治疗的认知升级(总结2000字+) 学有所得 健康·饮食·锻炼 每天8000步,今天:7000 食物中低热量,底油,低盐的比重大于50%的重量:早上,中午,晚上OK 人际·家人·朋友 至少每天1小时的陪伴 工作·思考 现在和将来的工作中,最重要的事情是什么? 现在和将来的工作中,最重要的基础核心能力是什么? 最美好的三件事...阅读全文

博文 2018-12-26 23:34:43 郭青耀

Go语言编程(十五)之接口

接口在Go语言有着至关重要的地位。如果说goroutine和channel是支撑起Go语言的并发模型的基石,让Go语言在如今集群化与多核化的时代成为一道极为亮丽的风景,那么接口是Go语言整个类型系统的基石,让Go语言在基础编程哲学的探索上达到前所未有的高度。 Go语言在编程哲学上是变革派,而不是改良派。这不是因为Go语言有goroutine和channel,而更重要的是因为Go语言的类型系统,更是因为Go语言的接口。Go语言的编程哲学因为有接口而趋近完美。 Go 语言的接口不单单只是接口,下面我们通过一系列对比来进一步探索Go语言的接口特性。 其他语言的接口 Go语言的接口并不是其他语言(C++、Java、C#等)中所提供的接口概念。 在Go语言出现之前,接口主要作为不同组件之间的契约存在。...阅读全文

博文 2016-10-15 18:00:07 JoeySheng

Qcon2017实录|Service Mesh:下一代微服务

▲扫码报名活动 数人云11月Meetup报名开启,看中西方大神如何论道云原生与微服务!本文作者敖小剑老师将在本次Meetup上继续分享Service Mesh相关内容,欢迎报名~ 数人云之前给大家分享过敖小剑老师的《万字解读:Service Mesh服务网格新生代--Istio》,详细地阐述了发展及理念,在Qcon2017上,敖小剑老师又做了关于Service Mesh的演讲,以下是本次演讲的实录。 敖小剑/数人云资深架构师 十五年软件开发经验,微服务专家,专注于基础架构,Cloud Native拥护者,敏捷实践者。曾在亚信,爱立信,唯品会和ppmoney任职。 简单回顾一下过去三年微服务的发展历程。在过去三年当中,微服务成为我们的业界技术热点,我们看到大量的互联网公司都在做微服务架构的落地...阅读全文

博文 2017-10-20 11:26:57 数人云

数据结构和算法(Golang实现)(21)排序算法-插入排序

插入排序 插入排序,一般我们指的是简单插入排序,也可以叫直接插入排序。就是说,每次把一个数插到已经排好序的数列里面形成新的排好序的数列,以此反复。 插入排序属于插入类排序算法。 除了我以外,有些人打扑克时习惯从第二张牌开始,和第一张牌比较,第二张牌如果比第一张牌小那么插入到第一张牌前面,这样前两张牌都排好序了,接着从第三张牌开始,将它插入到已排好序的前两张牌里,形成三张排好序的牌,后面第四张牌继续插入到前面已排好序的三张牌里,直至排序完。 一、算法介绍 举个简单例子,插入排序一个 4 个元素的数列:4 2 9 1: []表示排好序 第一轮: [4] 2 9 1 拿待排序的第二个数 2,插入到排好序的数列 [4] 与排好序的数列 [4] 比较 第一轮进行中:2 比 4 小,插入到 4 前 第二...阅读全文

gocrawl类库解析

最近打算介绍go语言编写的开源类库架构分析,自己最开始使用go语言是做爬虫的,采用的是gocrawl, gocrawl是一个使用go语言编写的开源爬虫类库,今天来分析下gocrawl的实现。 ## 示例代码 ``` package gocrawl import ( "github.com/PuerkitoBio/goquery" "net/http" "regexp" "time" ) // Only enqueue the root and paths beginning with an "a" var rxOk = regexp.MustCompile(`http://duckduckgo\.com(/a.*)?$`) // DefaultExtender是gocrawl提供的一些默认实...阅读全文

博文 2017-02-09 20:01:19 shanks

???? 装饰模式-Decorator

???? 装饰模式-Decorator https://github.com/mumushuiding/golang-design-pattern/tree/master/03_Decorator❓ 问题???? 装饰模式应该可以在运行时 动态 地给一个已有的对象 添加 功能 (类似装饰圣诞树)✔️ 解决方法????通过装饰类 聚集 需要装饰和扩展的对象.????同时提供给顾客或客户与 装饰 相同的接口.⚡️类图 ????参与者装饰模式的参与者:???? IAuto (组件接口).IAuto 基类,基类的对象希望扩展自己的功能,但是自身不做任何修改.???? Decorator (装饰类). 装饰 类是基类IAuto的派生类, 类 Decorator 聚集 了类 IAuto 接口,通过这个对...阅读全文

博文 2019-08-26 15:33:15 mumushuiding

Excelize - Go 语言 (golang) Excel 文档基础库

前言 Excelize 是 Go 语言 (golang) 编写的用于操作 Office Excel 电子表格的文档基础库,基于 ECMA-376 Office Open XML 标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX / XLSM / XLTM 等格式文档。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)、透视表和切片器等复杂样式的文档,还支持向 Excel 文档中插入图片与图表,并且在保存后不会丢失文档原有样式,可以应用于各类报表系统、云计算和边缘计算系统中。入选 2018 开源中国码云 Gitee 最有价值开源项目 GVP,目前已成为 Go 语言最受欢迎的 Excel 文档基础库。 开源代码 GitHub:...阅读全文

博文 2020-04-09 05:33:11 阿泽Aze

GO 语言五步让你成为高手

这里是GO程序员的五个进化阶段: 第一个阶段(菜逼): 刚刚学习了这门语言。 已经通过一些教程或者培训班了解基本的语法,可以写短的代码片段。 第二个阶段 (探索者): 可以写一个完整的程序,但不懂一些更高级的语言特征,比如“channels”。还没有使用GO写一个大项目。 第三个阶段(大手): 你能熟练的使用Go, 能够用GO去解决,生产环境中一个具体和完整的问题。已经形成了一套自己的惯用法和常用代码库。在你的编码方案中Go是一个非常好用的工具。 第四阶段 (大神): 绝逼清楚Go语言的设计选择和背后的动机。能理解的简洁和可组合性哲学。 布道师: 积极地与他人分享关于Go语言知识和你对Go语言的理解。在各种合适的场所发出自己的声音, 参与邮件列表、建立QQ群、做专题报告。成为一个布道者不见得...阅读全文

博文 2016-09-03 05:00:02 yueguanyun

GO 语言五步让你成为高手

这里是GO程序员的五个进化阶段: 第一个阶段(菜逼): 刚刚学习了这门语言。 已经通过一些教程或者培训班了解基本的语法,可以写短的代码片段。 第二个阶段 (探索者): 可以写一个完整的程序,但不懂一些更高级的语言特征,比如“channels”。还没有使用GO写一个大项目。 第三个阶段(大手): 你能熟练的使用Go, 能够用GO去解决,生产环境中一个具体和完整的问题。已经形成了一套自己的惯用法和常用代码库。在你的编码方案中Go是一个非常好用的工具。 第四阶段 (大神): 绝逼清楚Go语言的设计选择和背后的动机。能理解的简洁和可组合性哲学。 布道师: 积极地与他人分享关于Go语言知识和你对Go语言的理解。在各种合适的场所发出自己的声音, 参与邮件列表、建立QQ群、做专题报告。成为一个布道者不见得...阅读全文

博文 2016-09-03 09:00:11 yueguanyun

【golang-GUI开发】struct tags系统(一)

我们已经介绍了qt的signal和slot,现在该讲讲它的struct tags系统了。qt拥有多种的struct tags,我们会去一一了解它们。 什么是struct tags? struct tag又叫做结构体标签,顾名思义,它就是用来给结构体字段做标记的。比如我们熟悉的JSON就使用了tags: type User struct { UserId int `json:"user_id" bson:"user_id"` UserName string `json:"user_name" bson:"user_name"` } tags由反引号包裹,name在:之前,value在:之后由双引号包裹。 有了这些tags,我们的代码就可以很轻松的使用reflect来取得tags的name和na...阅读全文

博文 2018-07-30 21:30:00 apocelipes

二、Service Mesh 演进历程

第二个部分和大家追溯一下 Service Mesh 的演进历程。要注意,虽然 Service Mesh 这个词汇直到 2016 年 9 才有,但是它表述的东西很早以前就出现了。首先看“远古时代”,第一代网络计算机系统,最早的时候开发人员需要在自己的代码里处理网络通讯的细节问题,比如说数据包顺序、流量控制等等,导致网络逻辑和业务逻辑混杂在一起,这样是不行的。接下来出现了 TCP/IP 技术,解决了流量控制问题,从右边的图上可以看到,功能其实没发生变化:所有的功能都在,代码还是要写。但是,最重要的事情,流程控制,已经从应用程序里面抽出来了。对比左右两边的图,抽出来之后被做成了操作系统网络层的一部分,这就是 TCP/IP,这样的话应用的结构就简单了。现在写应有,就不用考虑网卡到底怎么发。在 TCP...阅读全文

博文 2018-12-14 14:34:46 蒲熠星F1

Excelize 发布 2.0.2 版本, Go 语言最受欢迎的 Excel 基础库

Excelize 是 Go 语言编写的用于操作 Office Excel 文档类库,基于 ECMA-376 Office Open XML 标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX 文档。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)、透视表和切片器等复杂样式的文档,还支持向 Excel 文档中插入图片与图表,并且在保存后不会丢失文档原有样式,可以应用于各类报表系统中。入选 2018 开源中国码云 Gitee 最有价值开源项目 GVP,目前已成为 Go 语言最受欢迎的 Excel 文档基础库。 开源代码 GitHub: github.com/xuri/excelizeGitee: gitee.com/xurim...阅读全文

博文 2019-10-09 23:02:38 续日

Golang的垂直组合思维——type embedding

什么是Golang的正交组合-垂直组合思维:Tony Bai的博客 - Coding in GO way - Orthogonal Composition Go语言通过type embedding实现垂直组合。组合方式莫过于以下这么几种: a):construct interface by embedding interface b):construct struct by embedding interface c):construct struct by embedding struct Go语言中没有继承,但是可以用结构体嵌入实现继承,还有接口这个东西。现在问题来了:什么场景下应该用继承,什么场景下应该用接口。这里从一个实际的案例出发。 问题描述: 网游服务器中的一个例子。假设每个实体...阅读全文

博文 2019-03-07 19:34:42 Ovenvan

[译] CockroachDB GC优化总结

几周前我们分享了一个帖子讲述我们为什么选择Go语言编写CockroachDB,我们收到一些问题,询问我们是如何解决Go语言的一些已知问题,特别是关于性能、GC和死锁的问题。 本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 减少内存分配和GC优化 将Go与其他语言(比如java)区别开来的是Go语言能让你管理内存布局。通过GO语言,你可以合并碎片,而其他垃圾集合语言不能。 让我们看看CockroachDB中从磁盘读取数据并解码的一小段代码: metaKey := mvccEncodeMetaKey(key) var meta MVCC...阅读全文

博文 2017-02-09 08:09:20 Coldstar

????桥梁模式-Bridge

源码地址:https://github.com/mumushuiding/golang-design-pattern/tree/master/02_Bridge????桥梁模式-Bridge????桥梁模式的目的就是要实现抽象定义和它的实现部分可以互不依赖,单独开发✂️抽象定义和实现的部分相互分隔,各自只在自己的类的层次结构中.⚡️类图抽象定义和它的实现之间的关系称作 ????桥梁,它在二者之间建立连接​ ????参与者桥梁模式的参与者如下:???? Client (客户).???? AbstractDef (抽象定义). 类 AbstractDef 定义了客户可以使用的 ????接口,含有指向由自己规定的接口的IImplementer的引用.SpecAbstractDef (细分的抽象定义...阅读全文

博文 2019-08-23 17:33:01 mumushuiding

Golang learning 结构体 struct 与面向对象

Go 语言并不是传统意义上的面向对象语言,但是实现很小的面向对象的机制。 匿名嵌入并不是继承,无法实现多态处理,虽然配合方法集,可用接口来实现一些类似操作,但是其本质是完全不同的。 type Animal struct { 声明Animal name string age int } type Cat struct { Animal 匿名字段 teeth string "牙" "牙" 不是注释,字段标签(tag)不是注释,是用来描述字段的元数据,是struct的一部分 leg int } type Animal struct { 声明Animal类 name string age int } type AnimalAction interface { 声明AnimalAction 接口类 e...阅读全文

博文 2019-05-14 18:34:53 wangyongyue

怎样才能运营好社区O2O系统?_夏日葵电商

怎样才能运营好社区O2O系统?_夏日葵电商 现在正是社区O2O火爆的时候,很多企业看到了商机就一头扎进去,结果都黯然退场,社区O2O真有那么难做么?难是肯定的,但是如果选择了正确的运营方式,那么就会从难变容易很多。今天夏日葵电商小编,就要来给大家挖一挖社区O2O系统运营的干货。 在做运营计划之前,要有明确的目标,也就是希望通过社区O2O运营达到什么样的效果,应该从哪些方面入手。没有目标就去做运营,会像无头苍蝇一样,做再多也是无用功。 1.确定用户群体不同的产品会有不同的消费群体,所以社区O2O要通过产品的定位来确定用户的定位,再针对用户来做运营。用户的消费习惯会因为年龄、消费能力、个人喜欢等等原因而出现差异,有针对性的运营内容很关键。 2.做更优质的内容虽然UGC类产品的内容是用户创造的,但...阅读全文

博文 2017-05-27 09:00:44 夏小葵

代理模式-go/java实现

目的:在代理类中实现对操作目标类的控制,间接访问 优点:中介隔离了一层,调用对象类的时候,不需要直接操作,而是由第三方的代理类操作,这样更有利于解耦,有高扩展性 缺点:代码量增加,静态代理的每一个实体类的业务逻辑都需要有个对应代理类来完成。 设计场景如下: 我们现在要通过中介买房,我们需要做的是看房,中介会完成帮我们跟业主沟通,挑选房子,带我们去看,拿钥匙开门,谈价格等等一系列工作,而我们需要做的就是看房子和付款。 静态代理——golang实现: package proxypattern_static import "fmt" /*接口*/ type ISeller interface { /*定义接口实现方法*/ deal(int) } /*代理类*/ type ProxySeller s...阅读全文

博文 2018-12-27 11:34:48 Marstin

Go 语言 Excel 类库 Excelize 2.0.0 版本发布

Excelize 是 Go 语言编写的用于操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML 标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX 文档。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)、透视表和切片器等复杂样式的文档,还支持向 Excel 文档中插入图片与图表,并且在保存后不会丢失文档原有样式,可以应用于各类报表系统中。 GitHub: github.com/360EntSecGroup-Skylar/excelize 2019年4月23日, 社区正式发布了 2.0.0 版本,该版本包含了很多新功能、错误修复和性能优化。下面是有关该版本更新内容的摘要,完整的更改列...阅读全文

博文 2019-04-24 12:34:39 续日

Golang 面向对象编程-非侵入式接口

Golang 面向对象编程-非侵入式接口 在go语言中,一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口,例如: type File struct { // ... } func (f *File) Read(buf []byte) (n int, err error) func (f *File) Write(buf []byte) (n int, err error) func (f *File) Seek(off int64, whence int) (pos int64, err error) func (f *File) Close() error 这里我们定义了一个File类,并实现了Read()、Write()、Seek()、Close()等方法。设想我们有如下...阅读全文

博文 2020-06-01 11:32:49 __sk

我的2019

用一个词来总结2019那便是认知升级。 做的好的方面 一、自我突破 强迫自己在发言。从年初的GM沟通会,到年底的大佬讲座,都积极参与并尽可能主动的提问发言。 及时one-one。运动会上主动请求和CTO合影;和GM、总监分别one-one,遗憾的是自己没能更加的主动些。 知识share。组织了四次浅析系列分享,刻意训练自己的组织能力,表达能力,ppt能力。 二、刻意坚持 十个月。2月开始的9点读书会坚持了十个月。练就了现在9点到公司不再打哈欠的技能。并自创了一套RNSS理论,Read-Note-Summarize-Share(读书-笔记-总结-分享)循环。 六个月。7月开始的跑步坚持了六个月,共计340km。渐渐明白了大目标拆解为小目标还是可以实现的。 三、主动学习 技术方面学习了redis...阅读全文

博文 2020-01-02 11:33:15 冰吉凌

Excelize发布2.0.1版本,Go语言Excel文档基础库

Excelize 是 Go 语言编写的用于操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML 标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX 文档。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)、透视表和切片器等复杂样式的文档,还支持向 Excel 文档中插入图片与图表,并且在保存后不会丢失文档原有样式,可以应用于各类报表系统中。 GitHub: github.com/360EntSecGroup-Skylar/excelize 2019年7月1日,社区正式发布了 2.0.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,完整的更...阅读全文

博文 2019-07-01 08:02:38 续日

实体类的动态生成(三)

前言 在 .NET 中主要有两种动态生成并编译的方式,一种是通过 System.Linq.Expressions 命名空间中的 LambdaExpression 类的 CompileToMethod(...) 方法,但是这种方法只支持动态编译到静态方法,因为这个限制我们只能放弃它而采用 Emitting 生成编译方案,虽然 Emitting 方案强大但是实现起来麻烦不少,必须要手动处理底层 IL 的各种细节,脑补一些 C# 编译器的实现机理,同时还要了解一些基本的 IL(Intermediate Language) 和 CLR(JVM) 执行方面的知识。 基础知识 因为要采用 Emitting 技术方案,必然需要了解 IL,如果你之前没有怎么接触过,也不用灰心,网上有大量关于 IL 的入门文...阅读全文

博文 2018-08-07 11:35:02 Popeye

【golang-GUI开发】struct tags系统(二)qt的自定义组件和构造函数

今天我们来讲讲自定义组件和它的构造函数。 在前面的文章里我们已经接触了好几个自定组件,这次的示例是一个自定义对话框,他有一个about按钮,点击按钮可以显示出Qt的信息或者用户输入的信息。这是效果图: 下面我们就来重点讲解自定义组件和它的构造函数吧。 构造函数的声明 先上代码: type MyDialog struct { widgets.QDialog _ func() `constructor:"init"` _ func(string) `signal:"showAbout"` _ func() `signal:"showAboutQt"` _ func(bool) `slot:"aboutClicked,auto"` _ func(string) `slot:"enableAbout...阅读全文

博文 2018-08-04 00:30:01 apocelipes

Docker(1):Virtualbox Install Centos7 & Docker

1,关于docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。 Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。 在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。 摘自: http://dockerpool.com/static/books/docker_practice/...阅读全文

博文 2017-07-12 10:24:23 freewebsys

现代软件开发流程-by 12-Factor

简介 如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发。 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。 这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。 背景 本文的贡献者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台间接见证了数十万应用程序的开发,运作以及扩展的过程。...阅读全文

博文 2019-08-14 23:02:40 如来神掌

2019-12-29 golang的单方法接口

golang的单方法接口 所谓单方法接口,就是指“仅有一个成员方法的interface类型”。例如: // Eater 进食。 type Eater interface { Eat(food string) (error) } 注意:一般单方法接口的命名惯例是 ”方法名称“+“er“ 。 gopl教程提倡单方法接口。为什么呢?除了职责单一之外,更是非常灵活,因为接口可以组合。如果说单方法接口比较”窄“,通过组合多个单方法接口,就可以立即得到一个更“宽”的接口。如同积木可以通过基本颗粒构建不同的形状。 golang面向接口编程,没有一般意义上的基类与子类的对应的概念 。 若有一系列相似的类型,各自提供接口的方法集合中的不同部分,此时若把接口的方法集合拆开,全部定义成单方法接口,就可以很灵活地实...阅读全文

博文 2019-12-29 22:32:44 _部洪波_

再测Golang JSON类库

写项目一直需要进行序列化,听到了,也看到了很多同学老师对各个golang的json库进行测评。那本人为什么还要继续进行这一次测评呢?因为实践过的知识最有说服力,也是属于自己的,我也希望看到本博文的同学老师可以修改和执行测评的代码执行一遍,我相信会有不一定的体会。本次测评我选择了类库有: 类库 序号 类库 地址 备注 1 encoding/json Golan 2 easyjson github.com/mailru/easyjson 3 ffjson github.com/mailru/easyjson 4 iterator/json github.com/json-iterator/go 主要是针对上述的类型进行,本人采用了对不同的类库使用不同的结构体(仅仅是结构体名称不同,字段顺序和类型...阅读全文

博文 2018-07-02 12:23:23 梦朝思夕

空类的大小

空类就是没有任何数据成员的类,这种类占用的内存大小在不同的语言里面有不同的实现 c struct A {}; printf("sizeof(A): %lu\n", sizeof(struct A)); // sizeof(A): 0 这个结果输出是0,也就是说 c 语言中的空类大小为 0 struct A a1; struct A a2; printf("address(a1): %p\n", &a1); printf("address(a2): %p\n", &a2); printf("&a1 == &a2: %d\n", &a1 == &a2); // address(a1): 0x7ffdead15ff0 // address(a2): 0x7ffdead15ff0 // &a1 ==...阅读全文

空类的大小

空类就是没有任何数据成员的类,这种类占用的内存大小在不同的语言里面有不同的实现 ## c ``` c++ struct A {}; printf("sizeof(A): %lu\n", sizeof(struct A)); // sizeof(A): 0 ``` 这个结果输出是0,也就是说 c 语言中的空类大小为 0 ``` c++ struct A a1; struct A a2; printf("address(a1): %p\n", &a1); printf("address(a2): %p\n", &a2); printf("&a1 == &a2: %d\n", &a1 == &a2); // address(a1): 0x7ffdead15ff0 // address(a2): 0...阅读全文

博文 2019-11-27 20:56:02 hatlonely

golang-101-hacks(20)——接口

接口是由若干方法组成的引用类型,包含了接口的所有方法的类型被认为自动实现了该接口类。通过接口,您可以更加体会到面向对象编程。如下所示: package main import "fmt" type Foo interface { foo() } type A struct { } func (a A) foo() { fmt.Println("A foo") } func (a A) bar() { fmt.Println("A bar") } func callFoo(f Foo) { f.foo() } func main() { var a A callFoo(a) } 运行结果如下 A foo 让我们具体分析一下代码 type Foo interface { foo() } 上面的接...阅读全文

博文 2019-06-21 23:32:44 羊羽shine

Golang的包

包是golang的一种源码组织方式,一个以.go结尾的源码文件仅能归属于一个包。包可以看做一个类库或者命名空间,当在一个 .go 文件里导入一个包后,就可以使用该包里面的常量、变量、类型、函数名、结构字段等等。 目录结构: apps/ src/ helloworld/ hello.go init/ hello.go firstApp.go bin/ pkg/ helloworld/hello.go // hello.go package nihao import "fmt" func Shout() { fmt.Println("Hello, what's your name?") } func main() string { return "this is a function named...阅读全文

博文 2019-07-22 17:32:52 Mysic

免费电子图书库,精选新科技、算法、人工智能、语言编程类图书,持续更新中……

#### https://github.com/henson/Books 把自己读过的一些书分享出来给大家,涉及新思想、新科技、算法、人工智能、语言编程类等等,更偏重于Golang,每本书都是严格挑选,这个库也会持续不断的更新。 这些资源来自于互联网共享于互联网( from the Internet, for the Internet )。如果您有好书也不妨提交一个 issue,共享出来;如果涉嫌侵权,您也可以提交一个 issue 告知,我会及时删除。在此,对这些书的作者(或译者)们表示感谢! 如果您觉得这个 repository 还不错,不妨点个 star。 ![截图]( https://img.hacpai.com/file/2018/02/6abeb388942...阅读全文