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

Golang interface接口全面理解(一)

There are three kinds of time: the future is late, and now it is flying like an arrow. The past will never stand still. 时间的步伐有三种:未来姗姗来迟,现在像箭一般飞逝,过去永远静立不动。 什么是interface 在面向对象编程中,可以这么说:“接口定义了对象的行为”, 那么具体的实现行为就取决于对象了。 在Go中,接口是一组方法签名。当一个类型为接口中的所有方法提供定义时,它被称为实现该接口。它与oop非常相似。接口指定类型应具有的方法,类型决定如何实现这些方法。 创建和实现interface 在Golang中只要实现了接口定义的方法,就是(JAVA implement...阅读全文

博文 2018-03-12 15:33:08 90design

go语言赋值

使用赋值语句可以更新一个变量的值,最简单的赋值语句是将要被赋值的变量放在=的左边,新值的表达式放在=的右边。 x = 1 // 命名变量的赋值 *p = true // 通过指针间接赋值 person.name = "bob" // 结构体字段赋值 count[x] = count[x] * scale // 数组、slice或map的元素赋值 特定的二元算术运算符和赋值语句的复合操作有一个简洁形式,例如上面最后的语句可以重写为: count[x] *= scale 这样可以省去对变量表达式的重复计算。 数值变量也可以支持++递增和--递减语句(译注:自增和自减是语句,而不是表达式,因此x = i++之类的表达式是错误的): v := 1 v++ // 等价方式 v = v + 1;v 变成...阅读全文

博文 2016-04-11 03:00:02 zsy

GO語言基礎教程:序章

首先自我介紹一下我自己,我是一個coder,目前主要從事B/S程序開發工作,懂點PHP;ASP;JSP;JS;VB;C;DELPHI;JAVA,另外知道幾個數據庫,除此之外別無所長,那麼我為何會選擇學習GO呢!接下來我對此詳細說明一下. 首先我來說明一下C/S程序和B/S程序的優缺點: C/S程序主要是運行在客戶端的電腦上,通常採用安裝的形式,以windows操作系統為例,軟件會被編譯成二進制然後以exe或dll等方式存在於客戶端的電腦上,其執行效率是非常高的,當然了除非編程者把代碼寫的非常糟糕,除此之外C/S程序幾乎不需要考慮安全問題和負載問題,除此之外C/S程序開發出來的東西幾乎是不開源的,使用者只能被動接受卻不能更改軟件的功能(如果您會彙編的話那就另當別論了).能夠開發C/S程序的語言...阅读全文

GO語言基礎教程:array,slice,map

這節課我們來講解數組,切片和map,或許您是從其他語言轉到GO語言這邊的,那麼在其他語言的影響下您可能會不太適應GO語言的數組,因為GO語言把數組給拆分成了array,slice和map,接下來的時間讓我們一起研究一下這三者的差異以及用法.首先我們說一下array的部份: 1.數組的長度屬於數組的一部份,我們看下邊的例子 a:=[1]int{}和b:=[2]int{} a和b都是數組,但是他們的長度不同,在GO語言中會認為是不同的兩種類型,既然是不同的類型,那麼他們就不能進行比較或直接賦值的操作.其實這並不難理解,因為GO語言是類型安全的語言,跨越類型的賦值需要顯示的改變數據類型才行. 2.在GO語言中數組屬於值類型,而非引用類型,如果要取得數組的指針只需要這麼做即可. a:=[1]int{...阅读全文

博文 2015-06-17 23:01:19 sibang

go中接口与继承的选择

Go语言中没有继承,但是可以用结构体嵌入实现继承,还有接口这个东西。现在问题来了:什么场景下应该用继承,什么场景下应该用接口。 问题描述 这里从一个实际的案例出发。网游服务器中的一个例子。假设每个实体都有一个ObjectID,packet中都有使用到这个ObjectID,客户端与服务端之间通过这个ObjectID知道是一个什么实体。用面向对象的观点,就是有一个Object对象,里面有getObjectID()方法,所有对象都是继承自Object对象。 Creature继承Object,表示游戏中的生物。然后像Monster,NPC,都继承自Creature的。玩家分为三个种族,Slayer/Vampire/Ouster三个不同的类实现,继承自Creature。 Item也继承自Object,...阅读全文

博文 2017-06-01 02:03:26 徐学良

RETE算法的描述(原创)

通过一周左右的研究,对规则引擎有了一定的了解。现在写点东西跟大家一起交流,本文主要针对RETE算法进行描述。我的文笔不太好,如果有什么没讲明白的或是说错的地方,请给我留言。 首先申明,我的帖子借鉴了网上很流行的一篇帖子,好像是来自CSDN;还有一点,我不想做太多的名词解释,因为我也不是个研究很深的人,定义的不好怕被笑话。 好现在我们开始。 首先介绍一些网上对于规则引擎比较好的帖子。 1、 来自JAVA视频网 http://forum.javaeye.com/viewtopic.php?t=7803&postdays=0&postorder=asc&start=0 2、 RETE算法的最原始的描述,我不知道在哪里找到的,想要的人可以留下E-mail 3、 CMU的一位博士生的毕业论文,个人觉得...阅读全文

博文 2017-11-29 01:46:33 ipointer

GO語言基礎教程:Hello world!

首先簡單地說一下GO語言的環境安裝,從 http://golang.org/dl/ 針對自己的操作系統選擇合適的安裝包,然後下載安裝即可,下載的時候注意別選錯了的操作系統,例如go1.3.1.darwin-386-osx10.6.tar.gz 這個是蘋果操作系統的安裝包,go1.3.1.linux-amd64.tar.gz 這個是64位linux的安裝包,go1.3.1.windows-amd64.msi 這個是64位windows系統的安裝包,安裝過程很簡單,參照說明一步一步進行即可,在此不再贅述,類似的文章一搜一大片.如果你不能訪問go語言的網站,那麼說明我們偉大的長城防火牆爲了您的安全把您給墻了.想辦法跳牆吧. 裝好了GO環境之後您可能要選擇一個適合您的IDE才行,在此列舉幾個,至於選...阅读全文

博文 2016-01-06 12:00:01 sibang

Go语言圣经 1.3-赋值及类型声明篇

赋值(Assignment) 变量的值可以通过赋值操作符 = 来更新, v = 10。x = 1 // 具名变量x *p = true // 指针变量 person.name = "bob" // 结构体struct的字段 count[x] = count[x] * scale // 数组、切片或者map的某个元素 算数操作符和位操作符都有对应的一元操作符形式, v = v + x 等价于 v += x,例如:count[x] *= scale 这样的缩略形式能省去不少重复的工作,同时数字变量还能通过++递增或者--递减:v := 1 v++ // same as v = v + 1; v becomes 2 v-- // same as v = v - 1; v becomes 1 aga...阅读全文

博文 2016-03-18 20:00:00 abv123456789

多金诚聘兼职区块链讲师,基薪+点播分成。在家讲课视频上传。

多金诚聘兼职区块链讲师,基薪+点播分成。在家讲课视频上传。 根据您自己的区块链知识所长,自己安排和讲授培训内容、课时,面向:想从事区块链开发的求职者、或想了解学习区块链知识的爱好者等学习人士。 45分钟一节课,基薪为每节课录制费100~150元付酬;另外按点播付费提成,点播量越多收入越高,类似图书出版,除基本稿酬外,图书内容越好销量就越高,版税就越多,所以与您授课质量、授课内容和授课技巧等挂钩。 区块链技术包括多方面,您可讲授其中一门完整课程,或者有能力者可以多讲授几门。注:每门课可能有多人讲授并上传,让点播学习者来评价每位讲师的水平,这就决定着讲师的提成收入高低。 在家录制讲课内容,视频清晰度、讲课内容等须能达到播放和学习要求。 有意者请加微信331861889,请注明:...阅读全文

多金诚聘兼职区块链讲师,基薪+点播分成。在家讲课视频上传。

多金诚聘兼职区块链讲师,基薪+点播分成。在家讲课视频上传。 根据您自己的区块链知识所长,自己安排和讲授培训内容、课时,面向:想从事区块链开发的求职者、或想了解学习区块链知识的爱好者等学习人士。 45分钟一节课,基薪为每节课录制费100~150元付酬;另外按点播付费提成,点播量越多收入越高,类似图书出版,除基本稿酬外,图书内容越好销量就越高,版税就越多,所以与您授课质量、授课内容和授课技巧等挂钩。 区块链技术包括多方面,您可讲授其中一门完整课程,或者有能力者可以多讲授几门。注:每门课可能有多人讲授并上传,让点播学习者来评价每位讲师的水平,这就决定着讲师的提成收入高低。 在家录制讲课内容,视频清晰度、讲课内容等须能达到播放和学习要求。 有意者请加微信331861889,请注明:...阅读全文

GOLANG 赋值

基本赋值语法 变量=表达式 var a int;a=1 变量里的元素=表达式 var arr[3] int;arr[0]=1 声明变量类型同时赋值 var 变量 类型=表达式 var arr[3] int =[3]int{1,2,3} 复合操作 变量 运算符=表达式 var c int=10;b+=1 变量里的元素 运算符=表达式 var arr [3] int;arr[1]+=2 自增,自减,使用与数值型,不能放在表达式中 变量++,变量-- var i int=99;i++ 元组赋值 变量1,变量2,变量3=表达式1,表达式2,表达式3 var x,y,x int;x,y,z=1,2,3 简短声明,声明变量同时赋值,变量类型有go自主推导 变量 :表达式 teacher :="曾远征...阅读全文

博文 2016-08-30 16:00:00 zengyz

golang: 详解interface和nil

golang的nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。nil是预先说明的标识符,也即通常意义上的关键字。在golang中,nil只能赋值给指针、channel、func、interface、map或slice类型的变量。如果未遵循这个规则,则会引发panic。对此官方文档有明确的说明:http://pkg.golang.org/pkg/builtin/#Type golang interface nil gdb error golang的nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。nil是预先说明的标识符,也即通常意义上的关键字。在golang中,nil只能赋值给指针、channel、func、inter...阅读全文

博文 2014-10-04 19:26:09 kjfcpua

Go语言以匿名组合的方式实现继承

type Base struct { FirstName, LastName string Age float32 } func (base *Base) HasFeet() { fmt.Println(base.FirstName + base.LastName + "has feet! Base") } func (base *Base) Flying() { fmt.Println("Base Can flying!") } type Sub struct { Base Area string } func (sub *Sub) Flying() { sub.Base.Flying() fmt.Println("Sub flying") } func main() { chk := n...阅读全文

博文 2016-03-15 11:00:02 cc7756789w

多金诚聘兼职区块链讲师,基薪+点播分成。在家讲课视频上传。

多金诚聘兼职区块链讲师,基薪+点播分成。在家讲课视频上传。 根据您自己的区块链知识所长,自己安排和讲授培训内容、课时,面向:想从事区块链开发的求职者、或想了解学习区块链知识的爱好者等学习人士。 45分钟一节课,基薪为每节课录制费100~150元付酬;另外按点播付费提成,点播量越多收入越高,类似图书出版,除基本稿酬外,图书内容越好销量就越高,版税就越多,所以与您授课质量、授课内容和授课技巧等挂钩。 区块链技术包括多方面,您可讲授其中一门完整课程,或者有能力者可以多讲授几门。注:每门课可能有多人讲授并上传,让点播学习者来评价每位讲师的水平,这就决定着讲师的提成收入高低。 在家录制讲课内容,视频清晰度、讲课内容等须能达到播放和学习要求。 有意者请加微信331861889,请注明:...阅读全文

golang/PHP输出excel

以前输入excel的时候utf8总是乱码还是用其他方式把utf8转换为gbk才能显示,呵呵,其实是输出了csv,后来群里的朋友说需要utf8 BOM Excel才能正常识别utf8,今天测试了一下,很爽,比以前省了好几行代码.呼呼 BOM信息参考: http://zh.wikipedia.org/wiki/位元組順序記號 golang实现: package main import ( "os" "encoding/csv" ) func main() { f, err := os.Create("haha2.xls") if err != nil { panic(err) } defer f.Close() f.WriteString("\xEF\xBB\xBF") // 写入UTF-8 B...阅读全文

博文 2017-02-09 16:49:45 小菲儿

GO語言基礎教程:數據類型,變量,常量

GO類似PHP,每行的結尾要加分號來結束,不同點在於GO對此並不強制,這一點又像javascript,另外GO的語句塊是用一對大括號來包裹的,但是go要求左大括號必須要在語句的結尾處,不能在行首出現左大括號,這是一個新的特性,至少在我接觸的編程語言中第一次遇到這種狀況.還有就是GO對大小寫敏感,這一點相信大家不會有什麽爭議. GO語言的註釋方法和PHP是相同的,單行註釋用//,而多行註釋用/*註釋內容*/,這一點是沒差別的. Go有眾所周知的數據類型int,這個類型很特殊,他會自動根據您的硬件決定適當的長度,在32位的硬件上他的長度是32位,在64位的硬件上,他的長度就是64位,當然了,您也可以強制定義某個變量的長度,例如int8,int16,int32,int64 和 byte,uint8...阅读全文

GO語言基礎教程:Hello world!

首先簡單地說一下GO語言的環境安裝,從 http://golang.org/dl/ 針對自己的操作系統選擇合適的安裝包,然後下載安裝即可,下載的時候注意別選錯了的操作系統,例如go1.3.1.darwin-386-osx10.6.tar.gz 這個是蘋果操作系統的安裝包,go1.3.1.linux-amd64.tar.gz 這個是64位linux的安裝包,go1.3.1.windows-amd64.msi 這個是64位windows系統的安裝包,安裝過程很簡單,參照說明一步一步進行即可,在此不再贅述,類似的文章一搜一大片.如果你不能訪問go語言的網站,那麼說明我們偉大的長城防火牆爲了您的安全把您給墻了.想辦法跳牆吧. 裝好了GO環境之後您可能要選擇一個適合您的IDE才行,在此列舉幾個,至於選...阅读全文

golang struct聚合大量接口时,初始化方式不一致?

日前,因为一个业务需要,在struct聚合上百万个接口(因为没有基类、子类,只有通过接口来代替基类作用)的时候,出现了非常意外的编译提示。初步判定是接口数量有限制导致。 ```code 调试环境:go1.6.2 darwin/amd64 代码如下: ``` ```code package main import ( "fmt" ) const arraynum = 1 << 20 //①,数组的大小定义 type I interface { GetXY() (x, y int16) } type I_impl struct { x, y int16 } func (this *I_impl) GetXY() (x, y int16) {...阅读全文

Go语言核心之美 1.3-赋值及类型声明篇

版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/50894001 赋值(Assignment) 变量的值可以通过赋值操作符 = 来更新, v = 10。x = 1 // 具名变量x *p = true // 指针变量 person.name = "bob" // 结构体struct的字段 count[x] = count[x] * scale // 数组、切片或者map的某个元素 算数操作符和位操作符都有对应的一元操作符形式, v = v + x 等价于 v += x,例如:count[x] *= scale 这样的缩略形式能省去不少重复的工作,同时数字变量还能通过++递增或...阅读全文

博文 2019-03-17 13:09:03 erlib

常用Python数据类型转换方法 学习python课程

Python 支持四种不同的数值类型,分别是整型、长整型、浮点型和复数,这些类型的数据有各自的特点,在使用过程中也可以进行类型转换,具体转换方法如下: int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字符串 repr(x ) 将对象 x 转换为表达式字符串 eval(str ) 用来计算在...阅读全文

Python 代码性能优化技巧

来源:http://www.oldboyedu.com/zuixin_wenzhang/index/id/129.html Python开发代码简化除了采用规范化的编程规则之外,代码编写的逻辑性和对内置规则的掌握也对其有一定的影响,以下是Python3支持的用法,合理的利用可以极大的简化代码的书写复杂度。 **1. 列表推导式** 对于一组列表,如果想让其所有元素翻倍,很多人都会采用以往比较经典的写法,其实Python中有更精简的办法,实例如下: **以往做法:** num = [1, 3, 5, 7, 9] for i in range(len(num)): num[i] = num[i] * 3 **Python简化写法:*...阅读全文

Python编程必会数据类型

来源:http://bbs.oldboyedu.com/article-212-1.html 数据类型是每种编程语言必备属性,只有给数据赋予明确的数据类型,计算机才能对数据进行处理运算,因此,正确使用数据类型是十分必要的,不同的语言,数据类型类似,但具体表示方法有所不同,以下是Python编程常用的数据类型: **1. 数字类型** Python数字类型主要包括int(整型)、long(长整型)和float(浮点型),但是在Python3中就不再有long类型了。 **int(整型)** 在32位机器上,整数的位数是32位,取值范围是-231~231-1,即-2147483648~214748364;在64位系统上,整数的位数为64位,取值范围为-263~263...阅读全文

leetcode刷题记录Array篇(1&~Two Sum)

题目:Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note: The solution set must not contain duplicate quadruplets. 翻译:给定n个整数的数组S,S中有元素a,b,c和d,使得+ b + c + d = target? 找到数组中所有独特的四元组,给出目标的总和。注意:解决方案集不能包含重复的四元组。 思路:思路和3sum是一样的,...阅读全文

博文 2017-04-21 02:45:50 L千年老妖

Go语言中的nil

本文是Francesc Campoy在GoConf上做的Understanding Nil演讲的笔记。 (1)nil没有type。 (2)在Go语言中,未显示初始化的变量拥有其类型的zero value。共有6种类型变量的zero value是nil:pointer,slice,map,channel,function和interface。具体含义如下: 类型 nil值含义 pointer 指向nothing slice slice变量中的3个成员值:buf为nil(没有backing array),len和cap都是0 map,channel,function 一个nil pointer,指向nothing interface interface包含”type, value”,一个nil ...阅读全文

博文 2017-06-25 14:11:10 肖楠

Go语言编程(十三)之匿名组合

确切的说,Go语言也提供了继承,但是采用了组合的文法,所以我们将其称为匿名组合: type Base struct { Name string } func (base *Base) Foo() {...} func (base *Base) Bar() {...} type Foo struct { Base ... } func (foo *Foo) Bar() { foo.Base.Bar() ... } 以上代码定义了一个Base类(实现了Foo()和Bar()两个成员方法),然后定义了一个Foo类,该类从Base类“继承”并改写了Bar()方法(该方法实现时先调用了基类的Bar()方法)。 在“派生类”Foo没有改写“基类”Base的成员方法时,相应的方法就被“继承”,例如上面的例...阅读全文

博文 2016-08-11 18:00:01 JoeySheng

leetcode_1185

Golang: 思路:这题向我们展示了学数学的如何杀人诛心!!!让我们记住这个公式:基姆拉尔森计算公式,W=(d+2m+3(m+1)/5+y+y/4-y/100+y/400+1)%7,注意,1月份看成13月份,2月份看成14月份,比如2019-01-21应该被视作2018-13-21来计算。 代码如下: func dayOfTheWeek(day int, month int, year int) string { res:=[]string{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"} if month==1{ month=13 year-- } if month==2{ month=14 y...阅读全文

博文 2020-02-14 00:32:54 淳属虚构

Go语言核心之美 1.3-赋值及类型声明篇

赋值(Assignment) 变量的值可以通过赋值操作符 = 来更新, v = 10。x = 1 // 具名变量x *p = true // 指针变量 person.name = "bob" // 结构体struct的字段 count[x] = count[x] * scale // 数组、切片或者map的某个元素 算数操作符和位操作符都有对应的一元操作符形式, v = v + x 等价于 v += x,例如:count[x] *= scale 这样的缩略形式能省去不少重复的工作,同时数字变量还能通过++递增或者--递减:v := 1 v++ // same as v = v + 1; v becomes 2 v-- // same as v = v - 1; v becomes 1 aga...阅读全文

博文 2017-10-27 20:57:51 erlib

[uber-zap/part3]自定义记录器

说明 之前翻译的一个教程(没有备份原地址,梯子被封了)。原地址找到后补上 正文 zap 提供的字段编码器并一定完全合适自己的需求,比如:希望日志记录的输出和syslog或者其他常见的日志格式类似;可能希望日志中的时间戳忽略秒;将日志包含在方括号内等,这时候就需要自定义编码器了 性能因素 你可以自定义编码器time,leve,caller等。需要注意的是,编码器要尽可能高效,因为这是zap的内存、性能上的优势,毕竟每个日志行都要调用这些函数。所以要避免创建临时变量或者进行任何高强度的计算。 也就是说,下面的例子只是一个示范,不一定就是默认功能的最佳替代品。 自定义时间戳格式 这是一个常见的syslog格式的实现 func SyslogTimeEncoder(t time.Time, enc z...阅读全文

博文 2019-03-30 14:34:39 小龙虾

???? 装饰模式-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

Golang函数

函数声明 函数使用func关键字声明,除了类型是后置的以外,剩下的地方基本和其他语言类似。特别地,和变量声明类似,如果函数参数的类型一样,同样可以只在最后添加类型。 func add(a, b int) int { return a + b } 函数返回值 Golang的函数可以返回多个值,这个特性类似于某些语言的返回元组的特性。 func swap(a, b int) (int, int) { return b, a } 命名返回值 命名返回值有点像某些语言的out参数。使用命名返回值的话,return语句就不需要添加返回值了,因为返回值已经在函数签名上指定了。 func divide(a, b int) (quotient, remainder int) { quotient = a /...阅读全文

博文 2017-06-01 15:07:24 乐百川

go语言赋值

使用赋值语句可以更新一个变量的值,最简单的赋值语句是将要被赋值的变量放在=的左边,新值的表达式放在=的右边。 x = 1 // 命名变量的赋值 *p = true // 通过指针间接赋值 person.name = "bob" // 结构体字段赋值 count[x] = count[x] * scale // 数组、slice或map的元素赋值 特定的二元算术运算符和赋值语句的复合操作有一个简洁形式,例如上面最后的语句可以重写为: count[x] *= scale 这样可以省去对变量表达式的重复计算。 数值变量也可以支持++递增和--递减语句(译注:自增和自减是语句,而不是表达式,因此x = i++之类的表达式是错误的): v := 1 v++ // 等价方式 v = v + 1;v 变成...阅读全文

博文 2016-09-10 13:00:02 迪克猪

初始版python学习

Python学习 一种面向对象的解释型计算机程序设计语言一,Python核心诉求: 编程简单 代码优雅 开发效率高二,Python应用领域Python是一门全栈式语言Python有丰富的生态库Python模块之间的胶水语言、自动测试,运维 ,科学计算,金融数据分析,网络爬虫,大数据分析处理,后台服务器,前端界面,机器学习ML,人工智能AL 等等云计算 云计算最火语言,典型应用OpenStackweb开发典型WEB框架Django科学运算,人工智能典型库 NumPy,SciPy,Matplotlib,Enthought libraaryys,pandas系统运维金融量化交易,金融分析,图形GUIPyQT,WxPython,Tkinter三,Python优缺点优:定位是优雅,明确,简单开发效率非...阅读全文

博文 2019-04-10 23:34:40 星空梦想

go语言赋值

使用赋值语句可以更新一个变量的值,最简单的赋值语句是将要被赋值的变量放在=的左边,新值的表达式放在=的右边。 x = 1 // 命名变量的赋值 *p = true // 通过指针间接赋值 person.name = "bob" // 结构体字段赋值 count[x] = count[x] * scale // 数组、slice或map的元素赋值 特定的二元算术运算符和赋值语句的复合操作有一个简洁形式,例如上面最后的语句可以重写为: count[x] *= scale 这样可以省去对变量表达式的重复计算。 数值变量也可以支持++递增和--递减语句(译注:自增和自减是语句,而不是表达式,因此x = i++之类的表达式是错误的): v := 1 v++ // 等价方式 v = v + 1;v 变成...阅读全文

博文 2016-09-12 12:00:17 迪克猪

以太坊数据结构MPT

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 MPT(Merkle Patricia Tries)是以太坊存储数据的核心数据结构,它是由Merkle Tree和Patricia Tree结合的一种树形结构,理解MPT有助于我们更好的理解以太坊的数据存储。在了解MPT数据结构之前,我们需要先来看看基本的Tree结构和Merkle Tree、Patricia Tree。 Trie字典树  Trie树,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。 上图是一棵Trie树,表示了字符串集合{“a”, “to”, “tea”, “ted”, “ten”, “...阅读全文

博文 2019-09-24 13:32:48 链客

golang学习笔记--Interface

什么是 Interface 在面向对象的世界中,接口的一般定义是“接口定义对象的行为”,即只定义对象的行为,至于对象如何行动则具体实现在对象中。 在 Golang 中,接口是一组方法签名,当一个类型为接口中的所有方法提供定义时,就说实现了该接口。接口指定类型应具有的方法,类型决定如何实现这些方法。 接口的定义和实现 package main import ( "fmt" ) //interface definition type VowelsFinder interface { FindVowels() []rune } type MyString string //MyString implements VowelsFinder func (ms MyString) FindVowels(...阅读全文

Rust学习笔记4 面向对象编程

github地址:https://github.com/bradyjoestar/rustnotes pdf下载链接:https://github.com/bradyjoestar/rustnotes/blob/master/Rust%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.pdf 参考: https://rustcc.gitbooks.io/rustprimer/content/ 《RustPrimer》 https://kaisery.github.io/trpl-zh-cn/ 《Rust程序设计语言-简体中文版》 4.1 面向对象数据结构 4.1.1 元祖 元祖表示一个大小、类型固定的有序数据组。 let y = (2...阅读全文

博文 2019-07-05 19:32:51 bradyjoestar

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

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

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

GO的第二天,赋值和类型

元组赋值 赋值,一听这个词,感觉什么都不用说了,就是简单!不过Go还提供了一个元组赋值。元组赋值是另一种形式的赋值语句,它允许同时更新多个变量的值。在赋值之前,赋值语句右边的所有表达式将会先进行求值,然后再统一更新左边对应变量的值。不BB,先看代码: // 交换两个变量的值 x, y = y, x a[i], a[j] = a[j], a[i] 计算两个整数值的的最大公约数(GCD) func gcd(x, y int) int { for y != 0 { x, y = y, x%y } return x } 计算斐波纳契数列(Fibonacci)的第N个数 func fib(n int) int { x, y := 0, 1 for i := 0; i < n; i++ { x, y =...阅读全文

博文 2020-03-07 11:32:41 Mr_J

提升Python编程效率的几种方法

前言我们知道Python这门语言在运行速度上已经败给了许多别的语言(比如C, C++, Java, Golang....).但从一个开发者的角度来看Python是我最喜欢的语言,很大一部分原因在于其语法简单(其实是我比较懒),还有很多很sao的操作,可以大大提高我们的敲代码的效率.我们通常叫这种sao操作为pythonic.Python的sao操作很多,这里先介绍几种,以后慢慢更.1.交换两个变量传统写法: pythonic: 2.枚举enumerate设想一个场景,有一个列表["老胡", "老王", "老李", "老赵"],现在要求你创建一个字典,其中字典的每一项key为列表的元素,value为对应元素的下标,该怎么做?这并不是枚举的最佳使用场景,这里只是一个例子,告诉你们枚举其实很好用....阅读全文

博文 2019-07-04 17:34:26 我爱学python

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