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

Go 系列教程 —— 19. 接口(二)

欢迎来到 Golang 系列教程的第 19 个教程。接口共有两个教程,这是我们第二个教程。如果你还没有阅读前面的教程,请你阅读[接口(一)](https://studygolang.com/articles/12266)。 ### 实现接口:指针接受者与值接受者 在[接口(一)](https://studygolang.com/articles/12266)上的所有示例中,我们都是使用值接受者(Value Receiver)来实现接口的。我们同样可以使用指针接受者(Pointer Receiver)来实现接口。只不过在用指针接受者实现接口时,还有一些细节需要注意。我们通过下面的代码来理解吧。 ```go package main import "fmt" type Describer int...阅读全文

博文 2018-02-01 15:44:37 heyulong

GO语言结构体方法跟结构体指针方法的区别

首先,我定了三个接口、一个结构和三个方法: type DeptModeA interface { Name() string SetName(name string) } type DeptModeB interface { Relocate(building string, floor uint8) } type Dept struct { name string building string floor uint8 Key string } func (self Dept) Name() string { return self.name } func (self Dept) SetName(name string) { self.name = name } func (self *D...阅读全文

博文 2017-01-18 16:00:08 tree2013

专访:听道哥聊互联网江湖——探底黑产,描绘作战地图

我是搬运工,原贴地址:http://click.aliyun.com/m/5826/ 摘要: 保卫阿里云这个中国 35% 的网站都坐落其上的云计算平台和上面的居民,道哥觉得自己守土有责,不容有失。 吴翰清,这个资深黑客拥有诸多身份:写“道哥的黑板报”的“文艺网红”& 阿里云云盾的负责人。 在他心里,第一个身份轻如鸿毛,第二个身份重若泰山。 保卫阿里云这个中国 35% 的网站都坐落其上的云计算平台和上面的居民,道哥觉得自己守土有责,不容有失。 探底黑产,描绘自己的作战地图,是他对自己职责要求的一部分。 他告诉我们一个秘诀:“想要知道中国的黑产有哪些行业,只要看淘宝的禁限售板块就够了。”DDoS攻击,敲诈勒索,暗网黑市,这些黑色产业,往往最终都会涉及到对阿里云上...阅读全文

DockOne技术分享(五十七):Docker容器对存储的定义(Volume 与 Volume Plugin)

【编者的话】Docker技术自从诞生以来已经带来了一场云计算的革命。其进展速度之快,接受程度之高让人惊叹。国内已经有不少介绍Docker技术的文章,它的生态,网络,管理,构建,应用都有方方面面的资料。然而,要想在生产环境中部署Docker,开发运维人员必须还要明白docker容器是如何使用存储(包括外部存储),才能更好地为容器选择合适的存储方案。本次交流与大家分享Docker对存储的定义的来龙去脉。 @Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自Rancher、携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、腾讯游戏、数人云、点融网、华为、轻元科技、中兴通讯等公司的技术负责人将带来实践经验分享,5...阅读全文

博文 2017-06-25 16:24:59 jiangsong

【翻译】gofix 介绍

对于一个不稳定的语言,删删改改什么的都是常事。即便是稳定的语言,也逃不过隔三差五整修一下的命运。于是 Golang 大修是个麻烦。 用 Golang 的好处是你正在使用世界上最聪明的一群科学家和工程师的杰作。于是,升级这些麻烦事变得不那么麻烦了,因为有了 gofix。 原文在此:http://blog.golang.org/2011/04/introducing-gofix.html ——————————-翻译分割线——————————- gofix介绍 下一个 Go 的发布版将会包含多个官方 Go 包 API 的重大变化。实现 HTTP 服务器处理、调用 net.Dial、调用 os.Open,或者使用反射的代码如果不使用新的 API 升级,将无法编译。现在的发布已经相当稳定并且不那么频繁...阅读全文

博文 2014-10-09 16:15:16 mikespook

学习编程的过程中可能会走哪些弯路,有哪些经验可以参考?

先说结论:没有少走的弯路。走过的弯路最终都会成为自身的财富。​前言:如果在开始学习之前,就想着能少走弯路,那多半会走不少弯路。因为关注的重点错了,把本来是踏踏实实学习编程知识的时间,都用来寻找少走弯路的方法了。一、盯住一个问题牢牢不放,不搞定这个问题,绝不向下走。一股子不到长城非好汉的决心,有这么强大的毅力学习是对的,这也是大多初学者容易走的弯路,学习之初先了解大致的概念,上来就寻根究底,会让自己变得疲惫不堪,因为初学小白开始很难具备强大的基础,很难把每个知识点都吃的相当透彻,所以开始学习的时候,先了解基本的方向和思路,掌握一些概念或者工具如何使用,等你慢慢的掌握了编程语言的整个套路,之前遇到的问题可能也就迎刃而解了。二、在学习基础语言的时候,一直怀疑所学语言是不是能找到工作,中间换了几种语...阅读全文

golang中所谓的”方法提升“,求解答。。。。

如果 S 包含一个匿名字段 T,S 的方法集不包含接受者为 *T 的方法提升。 这条原则说的是当我们嵌入一个类型,嵌入类型的接受者为指针的方法将不能被外部类型的值访问。 刚才在golang中国博客上看到这个说法,自己验证了后发现完全可以访问,哪位高手能解释下,期待ing........阅读全文

新一轮.tt域名抢注狂潮,你准备好了吗?

tt域名是特立尼达和多巴哥国家的顶级域名,tt域名是目前开放的位数不多的“双胞胎”域名后缀之一,由于先天优势,使得tt域名更容易被广大用户所记住,因此tt域名的市场接受程度非常高,在国际互联网上使用tt域名作为企业网站域名的比例也在不断攀升,随之也促进了域名投资者对tt域名的青睐。 锤子科技成功从一个网友手上购得t.tt域名,收购价不详,但据此网友声称为10几万。虽然称不上天价,但这个域名还是意义非凡。 ![截图.jpg](http://studygolang.qiniudn.com/170111/d1fd32300cb45213eb49e27e1d4dd61b.jpg) tt域名还有哪些含义? tt域名有天天、团团、听听、铁通等多层含义,奇特色就是很容易让广大网名记...阅读全文

云计算学习需要多长时间呢?云计算是什么?

云计算,是大家都比较熟悉的,经过最近几年的发展,云计算已经获得了很大的关注和重视,吸引了越来越多人的眼球和关注,也有不少人的想要学习linux云计算。 但是对于零基础的人员来说,根本不知道什么是云计算?其实简单的来说,云计算就是一种资源交付、使用模式,通过网络获得应用所需要的资源,提供资源的网络叫做云,云中可以进行无线的拓展,随时可以进行获取的。 可以按需进行购买,就好比百度云盘一样,属于云计算里面的公有云。那么云计算听起来复杂,学习会很难吗?学习周期是多长? 其实从划分上来说,云计算分为了公有云、私有云、混合云等多种,不给大家一一讲解这三种的具体表现,但是大家一定要记住,云计算运维相对于编程语言来说,更容易入门,也非常容易掌握,对于零基础的人员来说是非常不错的选择。 对比编程语言来说,编程...阅读全文

博文 2019-11-13 16:34:15 zhouzhou2018

[翻译]我其实没办法学 Erlang,因为它不存在,所以我发明了它

这是 Joe Armstrong,Erlang 之父在昨天(2013-01-24)发表在 Erlang 邮件列表里的内容。详细解说了他自己从开始学习编码到发明 Erlang 的整个历史。并且,对如何学习编程;如何成为大牛等一系列热门问题提出了自己的看法。当然,文中槽点无数(包括坚定不移的黑我大PHP)。这也是我觉得有必要翻译出来的原因之一。 由于是发在邮件列表的,所以原文是没有正式的标题的。我从 HN 上抄了这个标题回来。 整体上,虽然是和 Erlang 相关的话题。但是读过之后,会突然领会到 Golang Team 一直以来坚持的一些东西的更深层次的含义。 ————翻译分隔线———— 回到过去…… 当我开始学习编程的时候(1967),我可以在 FORTRAN 和(传说中的)Algol 之间...阅读全文

流量1000和流量100000的网站建设,其实只差这一步!

随着网络时代的到来,各行各业的网站层出不穷,仅仅依靠网站创意和美观是远远不够的,网站是否流量为王,网站优化却起到重中之重的作用。好比一篇文章标题是搜索引擎中相当重要的参数,有关于它的优化程度就不言而喻了。 当然了网站优化方法有很多种,我先简单列举几个大家普遍都在用的网站优化。 ![t018da5896612b39a17.jpg](https://static.studygolang.com/180419/ca4df11d74faaf6d04918701ab466112.jpg) 正如以上图片显示,定位、描述、关键词、内容、友情链接、外链等,这些都是大家都在使用的网站优化,但是你会发现这样的做法需要花费很大的人力、物力才能达到这样的效果,当然也不排除一些做出来达不到你想要的预...阅读全文

Go 语言是 Google 的语言,不是我们的

> GCTT 观点:有一个组织把控 Go 的发展方向,这其实一定程度上是一件好事,否则 Go 不知道又发展成什么了。 在 Twitter 上,我看到了[下面的问题](https://twitter.com/kapoorsunny/status/1130150301468700674)([via](https://old.reddit.com/r/golang/comments/bqiyyb/generics_in_go/)): > 在 Go 话题下有很多人在讨论泛型,为什么我们不能拥有像 OpenGo 这样的东西,通过社区就可以实现 Go 的泛型,而非要等待官方的实现。就像 OpenJDK 一样 对于这个问题有很多答案,但是很少有人大大方方的说出来:Go 是 Google 的语言,不是社区的...阅读全文

golang 值接收者和指针接收者

interface_值接收者_指针接收者.png 例子 package main import "fmt" //定义一个 anial 接口类型 type anial interface { move() } type cat struct { name string feet int } type dog struct { name string feet int } // 采用值接受者,参数可以传递结构体类型和结构体指针类型 //func (c cat)move() { // fmt.Printf("%s,走猫步\n", c.name) //} // //func (d dog)move() { // fmt.Printf("%s,走狗步\n", d.name) //} // 采用指针接受...阅读全文

博文 2020-04-09 00:32:51 小麦客

那些年移动App测试的坑

从自动化、功能、性能、压力、稳定性到兼容性测试,移动应用测试分门别类甚广,尽管测试对于大多数企业和开发者而言是非常头疼的事情,但许多公司在很多时候还是由开发者自测应用,更有甚者因资金等种种原因而没有测试,由此催生出众多第三方测试服务。 移动应用测试现状 谈到移动应用测试的现状,目前许多公司都是开发者自己负责应用测试,自测其实是很困难的一件事,有些公司还会由于资金以及其他原因没有测试,也有一些公司会采取招一大堆功能测试和Android测试人员的手段,但大部分并没有特别地成熟、完善,很难通过单点测试或自动化测试来覆盖整体功能,总体而言还是比较费劲。于是,便有许多创业公司试图在这方面深耕以求解决痛点。 现在对于移动应用测试而言,即使配备了测试团队,也可能不会发现太多问题,...阅读全文

第十三天:golang学习笔记之encoding

★encoding | encoding包定义了供其它包使用的可以将数据在字节水平和文本表示之间转换的接口. 编码在之前一直是一个重大问题,更可读的?效率更高的?轻量级的?重量级的?多种编码类型共存。 encoding encoding定义了四个接口(并没有多少对象去实现,甚至目录下的子包): // 实现了本接口的对象可以把自身编码为二进制,并作为返回值返回 type BinaryMarshaler interface { MarshalBinary() (data []byte, err error) } // 实现了本接口的对象可以把二进制编码为自身,接受者应该为指针,传参应该是TextMarshaler生成的二进制 type BinaryUnmarshaler interface { ...阅读全文

博文 2019-12-28 21:32:41 Macmillan_

Gopher 杭州线下面基第一期

阅读本文大概需要 4 分钟。Hello,大家好,我是 Seekload,本次 Go 语言中文网 · 杭州线下交流会 的组织者。6 月 2 号的线下交流会能顺利举办,特别感谢 Go 语言中文网站长 @徐新华 的宣传、@张亚龙 提供场地支持,以及其他 19 位小伙伴空出宝贵的时间积极参与到其中,为这次交流会注入更多活力并提供了各自宝贵的经验。参加交流会的小伙伴大部分是杭州本土的,也有来自无锡、上海等地,为他们的热情点赞;有来自阿里、趣头条、恒生电子等大厂,有行业 10 年老兵,也有即将毕业的新鲜血液。这次面基的主要目的是让大家可以结识更多志同道合的伙伴,分享彼此学习、成长和行业经验!交流会的主要流程:13:50 - 14:20 站长 @徐新华 为小伙伴们连线面聊;14:20 - 15:00 小伙...阅读全文

博文 2019-06-04 09:27:17 Golang来啦

golang flag用法

基本函数说明 //生成命令行参数对应的变量,变量为指针类型 var name = flag.String("name", "Tom", "Input your name") var age = flag.Int("age", 18, "Input your age") var vip = flag.Bool("flag", true, "Is VIP") 其中"name","age","flag"对应在命令行中通过如下格式指定参数 -name=Jack -name Jack --name=Jack --name Jack //定义值类型的命令行参数变量,xxxVar对其进行初始化。可以为Int,String,Bool var postCode int flag.IntVar(&postCod...阅读全文

博文 2019-11-06 18:32:44 麦穗儿

Mastering the game of Go with deep neural networks and tree search

The game of Go has long been viewed as the most challenging of classic games for artificial intelligence owing to its enormous search space and the difficulty of evaluating board positions and moves. Here we introduce a new approach to computer Go that uses ‘value networks’ to evaluate board positions and ‘policy networks’ to select moves. These de...阅读全文

golang函数方法

定义 Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。语法格式如下: func (variable_name variable_data_type) function_name() [return_type]{ /* 函数体*/ } package main import "fmt" type Circle struct { radius float64 } func main() { var c Circle c.radius = 10 fmt.Println("圆的面积 = ", c.getArea()) } func (c Circle) getArea() float64...阅读全文

博文 2019-12-31 06:32:42 程序小白菜

go 方法接受者 是指针类型和非指针类型的 区别

go 方法接受者 是指针类型和非指针类型的 区别 非指针类型 package main import "fmt" // 定义接口 type Car interface { GetName() string Run() } // 定义结构体 type Tesla struct { Name string } // 实现接口的GetName()方法 func (t Tesla) GetName() string { t.Name = "test" return t.Name } // 实现接口的Run()方法 func (t Tesla) Run() { fmt.Printf("%s is running\n", t.Name) } func main() { var c Car var t T...阅读全文

博文 2018-12-25 22:35:13 295631788

golang 动态查找类型实例

关键字func和函数名之间的参数被称为receiver(接收者),将函数与接收者的类型绑在一起。如果一个函数有接收者,这个函数被称为method。不同的receiver,method可以同名这里采用封装的方法进行简述方法的妙用先看一下注册路由的方式rest.Post("/user/login", common.MakeHandler(&user.login{}))MakeHandler的方法如下,返回了一个HandlerFuncfunc MakeHandler(h Handler) rest.HandlerFunc { return func(w rest.ResponseWriter, r *rest.Request) { common_handler(w, r, h) } }具体comm...阅读全文

有哪些不用写代码就能轻松制作HTML5网页的工具?

目前的HTML5页面制作工具可以分为两类:基于HTML5的网站制作工具和专门针对移动终端的H5页面制作工具。网上对移动端H5的工具推荐很多,却鲜有人专门整合下网站页面制作工具,今天笔者给大家分享一下自己知道的不用写代码就能制作HTML5网页的工具。 1、9466网页助手 ![01.png](http://studygolang.qiniudn.com/170116/f3fcd5f8e17d7421eae77102a5be874c.png) ![02.png](http://studygolang.qiniudn.com/170116/aa8323580f7b21d7961a0833846e4013.png) 提供较丰富的模板供用户进行“克隆”,只要在模板基础上修改页面...阅读全文

goang Receiver & interface

package main import ( "fmt" ) type Pointer struct { x string } func (this *Pointer) PrintX() { fmt.Printf("X:%s\n", this.x) } func (this *Pointer) SetX(str string) { this.x = str } type Value struct { x string } func (this Value) PrintX() { fmt.Printf("X:%s\n", this.x) } func (this Value) SetX(str string) { this.x = str } func main() { p1 := Pointe...阅读全文

博文 2016-01-19 03:00:01 diegodu

Go 语言方法接受者类型的选择

概述 很多人(特别是新手)在写 Go 语言代码时经常会问一个问题,那就是一个方法的接受者类型到底应该是值类型还是指针类型呢,Go 的 wiki 上对这点做了很好的解释,我来翻译一下。 何时使用值类型 如果接受者是一个 map,func 或者 chan,使用值类型(因为它们本身就是引用类型)。如果接受者是一个 slice,并且方法不执行 reslice 操作,也不重新分配内存给 slice,使用值类型。如果接受者是一个小的数组或者原生的值类型结构体类型(比如 time.Time 类型),而且没有可修改的字段和指针,又或者接受者是一个简单地基本类型像是 int 和 string,使用值类型就好了。 一个值类型的接受者可以减少一定数量的垃圾生成,如果一个值被传入一个值类型接受者的方法,一个栈上的拷...阅读全文

博文 2016-03-23 15:00:01 kai_ding

html5建站工具使用测评

目前的HTML5页面制作工具可以分为两类:基于HTML5的网站制作工具和专门针对移动终端的H5页面制作工具。网上对移动端H5的工具推荐很多,却鲜有人专门整合下网站页面制作工具,今天笔者给大家分享一下自己知道的不用写代码就能制作HTML5网页的工具。 1、9466网页助手 提供较丰富的模板供用户进行“克隆”,只要在模板基础上修改页面即可,可以用来做个人网站。提供的模板大部分只专门针对PC或者移动站,页面数量比较少,不能实现跨屏。一些高级的组件向用户收费开放。 2、Rapid Weaver Mac上的一款HTML网页制作工具,一样的拖拽操作,不用对网页代码非常熟悉(一点点还是要的),苹果官网上宣传广告是在几分钟内能做出专业性水准的网页。如果是Windows系统,需要进...阅读全文

Ethereum学习笔记(一)

相关命令分析 eth.blockNumber 查看当前块高。 eth.getBlock() 根据高度查看块内容。 eth.syncing 获取同步状态,可以看到全网最新块高,提示用户同步进度。 区块分析 创世区块: { difficulty: 17179869184, extraData: "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", gasLimit: 5000, gasUsed: 0, hash: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3", logsBloom: "0x0000000000000000...阅读全文

博文 2017-10-26 10:04:44 慢性咽炎患者

golang实现简易的分布式系统

功能 能够发送/接收请求和响应 能够连接到集群 如果无法连接到群集(如果它是第一个节点),则可以作为主节点启动节点 每个节点有唯一的标识 能够在节点之间交换json数据包 接受命令行参数中的所有信息(将来在我们系统升级时将会很有用) 源码 package main import ( "fmt" "strconv" "time" "math/rand" "net" "flag" "strings" "encoding/json" ) // 节点数据信息 type NodeInfo struct { // 节点ID,通过随机数生成 NodeId int `json:"nodeId"` // 节点IP地址 NodeIpAddr string `json:"nodeIpAddr"` // 节点端口 ...阅读全文

博文 2018-10-07 12:34:42 小马哥_Magical

Golang模仿七牛图片处理API

之前一直在用qiniu的存储服务,生成图片的缩略图,模糊图,视频的webp,现在需要把存储移到s3上,那么这些图片,视频处理就要自己动手写了,本文梳理一下大致的思路。 分析需求 先看一下qiniu的接口是如何处理图片的,例如先截取视频第一秒的图片,再把图片缩略,最后存储到一个新的key,命令可以这么写 vframe/jpg/offset/1|imageMogr2/thumbnail/400x|saveas/xxx, 可以看到三个操作之间用 | 符号分割,类似unix 的 pipe 操作。 上面的操作算作一个cmd, 一次API请求可以同时处理多个cmd,cmd之间用分号分割, 处理完毕后,在回调中把处理结果返回,例如 { "id": "xxxxx", "pipeline": "xxx", "...阅读全文

博文 2017-02-09 08:29:46 一堆好人卡

GO语言学习-方法和接口

方法: 指包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。 例: type Food struct{ color string taste string } func ( fruit Food) Eat() string { return fmt.Sprintf("%v,%v)", fruit.color, fruit.taset) } Food为结构体类型,Eat为Food类型的方法, Eat方法的接受者是Food类型的值(或指针 func ( fruit * Food) Eat() string)。 apple := Food{"red", "sweet"} 或 apple := &Food{"red", "sweet"} 方法使用 apple.Eat() ...阅读全文

博文 2015-06-17 23:02:27 phlong999

go_工作池

```golang package main import ( "fmt" "time" ) // 在这个例子中,我们将看到如何使用goroutine 和channel实现一个_工作池_ // 工作池是我们将要在并发实例中支持的任务了,这些执行者将从`jobs`通道接受任务, // 并且通过`result`发送对应的结果。 // 工作池 func worker(id int, jobs <-chan int, result chan<- int) { for j := range jobs { fmt.Println("worker : ", id, "processing job ", j) time.Sleep(time.Second * 2) // 构建耗时2s的任务 result <...阅读全文

博文 2018-06-12 17:10:57 18393910396

go语言实现接口,接受者应该是传值还是传引用(传引用兼容传值)

/* go语言中给接口赋值的时候,对象如果是值(对于引用的接受者处理不了) 如果是指针,则可以自动实现值的处理 */ package main import "fmt" //定义Integer类型 type Integer int type LessAddInf interface{ Less(n Integer) bool Add(n Integer) Integer } func (this Integer) Less(n Integer) bool{ return this < n } func (this *Integer) Add(n Integer) Integer{ *this += n return *this } type Computer struct{ CPU stri...阅读全文

博文 2016-10-27 15:00:03 davidsu33

GO面向对象:method

method的语法如下: func (r ReceiverType) methodName(parameters) (results) go中的method是附属在一个给定的类型上的,他的语法和函数的声明语法几乎一样,只是在方法名之前增加了一个receiver,也就是method所依附的主体(可以面向对象中的对象理解) 例如下面的例子: type Box struct { width, heigh, depth float64 } func (b Box) Volume() float64 { return b.width * b.heigh * b.depth } func main(){ b:=Box{4,4,4} volume:=b.Volume() } Volume这个method是...阅读全文

博文 2016-01-29 18:00:01 fzk2008

golang 基础(29) 接口

square-gopher.png 在 go 语言接口更重视使用者,使用者是否承认和使用接口才是重要的,这里定义 Retriever 接口提供 Get 方法,所有具有 Get 方法的都可以认为是接口 package main import ( "fmt" "com.zidea/util/mock" ) type Retriever interface{ Get(url string) string } func download(r Retriever) string { return r.Get("www.baidu.com") } func main() { var r Retriever r = mock.Retriever{"this is fake baidu com"} fmt....阅读全文

博文 2019-04-03 08:34:39 zidea

Golang对象中的value与pointer

开宗明义 不是我喜欢装,要用什么value与pointer,而不说值与指针。实在是后面还要讲receiver时,实在不知道怎么说,但是value receiver与pointer receiver就好多了。 面向对象 如果一门编程语言哪一天不说面向对象了,那还真的是一件很奇怪的事情。即使是函数式语言,或者是C语言,都会以某种程度来说是怎么样实现面向对象的语义。面向对象,就是程序封装里面一道跨不过去的坎。 Golang中和面向对象形式上特别简单,就是给函数function定义加一个receiver,那么就变成了方法method了。如: type A struct { } func (a A) DoSomething() { /* 你在这里做了些什么事情 */ } a := new A(); a...阅读全文

GO基础:method相关

// method相关 // method是特殊的function,带有reciever参数。 // https://tour/golang.org package main import ( "fmt" "math" ) type Vertex struct{ X, Y float64 } // go 中没有类的概念 // method 方法,有接受者参数的函数 func (v Vertex) AbsMethod1() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } // function 普通的函数, func AbsFunc1(v Vertex) float64{ return math.Sqrt(v.X*v.X + v.Y*v.Y) }...阅读全文

博文 2016-09-14 16:00:00 Wolfanature

2020-03-20

答案:People show b People show a 这是Golang的组合模式,可以实现OOP的继承。 被组合的类型People所包含的方法虽然升级成了外部类型Teacher这个组合类型的方法(一定要是匿名字段),但它们的方法(ShowA())调用时接受者并没有发生变化。 此时People类型并不知道自己会被什么类型组合,当然也就无法调用方法时去使用未知的组合者Teacher类型的功能。 package main import "fmt" type People struct {} type Teacher struct{ People } func (p *People) ShowB() { fmt.Println("People show b") p.ShowA() } fun...阅读全文

博文 2020-03-20 13:32:51 anthonydan

golang 结构体

构造函数,可以使用普通方法来构建 值接受者和指针接收者 1、要改变内容必须使用指针接收者 2、结构过大也要考虑使用指针接收者 3、一致性;如有指针接收者,最好都是指针接收者 值接收者是go语言特有 值/指针接收者均可接收值/指针 nil指针也可以调用方法(.) 封装 对包而言的 每个目录只能一个包,main包包含程序入口 为结构定义的方法必须放在同一个包内,可以在不同文件...阅读全文

博文 2020-06-08 01:33:14 我真是刚的不像话