热乎的代码来了

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. /*
  6. 继承
  7. 一个结构体嵌到另一个结构体,称作组合
  8. 匿名和组合的区别
  9. 如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法,从而实现继承
  10. 如果一个struct嵌套了另一个【有名】的结构体,那么这个模式叫做组合
  11. 如果一个struct嵌套了多个匿名结构体,那么这个结构可以直接访问多个匿名结构体的方法,从而实现多重继承
  12. */
  13.  
  14. type Car struct {
  15. weight int
  16. name string
  17. }
  18.  
  19. func (p *Car) Run() {
  20. fmt.Println("running")
  21. }
  22.  
  23. type Bike struct {
  24. Car
  25. lunzi int
  26. }
  27. type Train struct {
  28. Car
  29. }
  30.  
  31. func (p *Train) String() string {
  32. str := fmt.Sprintf("name=[%s] weight=[%d]", p.name, p.weight)
  33. return str
  34. }
  35.  
  36. func main() {
  37. var a Bike
  38. a.weight =
  39. a.name = "bike"
  40. a.lunzi =
  41. fmt.Println(a)
  42. a.Run()
  43.  
  44. var b Train
  45. b.weight =
  46. b.name = "train"
  47. b.Run()
  48. fmt.Printf("%s", &b)
  49. }

练习2

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "time"
  6. )
  7.  
  8. type Car struct {
  9. Name string
  10. Age int
  11. }
  12.  
  13. func (c *Car) Set(name string, age int) {
  14. c.Name = name
  15. c.Age = age
  16. }
  17.  
  18. type Car2 struct {
  19. Name string
  20. }
  21.  
  22. //Go有匿名字段特性
  23. type Train struct {
  24. Car
  25. Car2
  26. createTime time.Time
  27. //count int 正常写法,Go的特性可以写成
  28. int
  29. }
  30.  
  31. //给Train加方法,t指定接受变量的名字,变量可以叫this,t,p
  32. func (t *Train) Set(age int) {
  33. t.int = age
  34. }
  35.  
  36. func main() {
  37. var train Train
  38. train.int = //这里用的匿名字段写法,给Age赋值
  39. //(&train).Set(1000)
  40. train.Car.Set("huas", )
  41. train.Car.Name = "test" //这里Name必须得指定结构体
  42. fmt.Println(train)
  43.  
  44. }

Golang之继承,多重继承(struct)的更多相关文章

  1. golang 中 map 转 struct

    golang 中 map 转 struct package main import ( "fmt" "github.com/goinggo/mapstructure&qu ...

  2. Golang 入门 : 结构体(struct)

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...

  3. GOLANG的继承+接口语法练习

    继承与接口同时存在 在Golang语言中,可以这么说:接口是继承的功能补充! 武当派有一个徒弟结构体,它继承WuDangMaster结构体的字段及方法 武林之中还有一个泰山北斗,名约少林派,少林入门神 ...

  4. golang 之 bson 与 struct 转换

    bson的介绍不说了golang下的解析包找到2个 一个是mongo的http://labix.org/gobson,另外一个比较小众https://github.com/sbunce/bson这里用 ...

  5. golang将interface{}转换为struct

    项目中需要用到golang的队列,container/list,需要放入的元素是struct,但是因为golang中list的设计,从list中取出时的类型为interface{},所以需要想办法把i ...

  6. GOLANG的继承语法练习

    package main import( "fmt" _"sort" _"math/rand" ) // type WuDangMaster ...

  7. golang sqlx查询时, struct字段冲突

    type TA struct { Id int64 `db:"id"` } type TB struct { Id int64 `db:"id"` } type ...

  8. golang 入门之struct继承,嵌套

    package main import "fmt" type Jocongmin struct{ Name string Home string Want string } fun ...

  9. GO开发[五]:golang结构体struct

    Go结构体struct Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继承在内的大量面向对象特性,只保留了组合(composition)这个最基础的特性 ...

随机推荐

  1. 判断设备(PC,安Android,iOS)

    //判断是不是PC function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = new Array("An ...

  2. rancher下的kubernetes之二:安装rancher和kubernetes

    在上一章<rancher下的kubernetes之一:构建标准化vmware镜像>,我们做了个通用的虚拟机镜像,可以root登录,apt已经更新,docker也装好了,现在我们就来安装ra ...

  3. WPF 中的 NameScope

    我们在 WPF 中使用绑定时可以使用 ElementName=Foo 这样的写法,并且还能够真的在运行时找到这个名称对应的对象,是因为 WPF 中提供了名称范围概念. 实现 INameScope 接口 ...

  4. Rails Cookie和session使用

    Rails通过cookies方法来操作cookie.这和session的操作有点相似 class CommentsController < ApplicationController def n ...

  5. Python3 机器学习

    Python 3 生成手写体数字数据集 Python 3 利用 Dlib 19.7 和 sklearn机器学习模型 实现人脸笑脸检测 Python 3 利用 Dlib 19.7 实现人脸检测和剪切 P ...

  6. 使用C#的两种方式OracleClient组件和OleDB组件连接ORACLE数据库

    一.使用OracleClient组件连接Oracle .Net框架的System.Data.OracleClient.dll组件(ADO.Net组件),为连接和使用Oracle数据库提供了很大的方便. ...

  7. Ubuntu14.04下Sublime Text 3解决无法输入中文

    在Ubuntu 14.04中安装了SublimeText 3之后发现既然不支持输入中文,于是在网上搜罗一下,发现很多人遇到了同样的问题,但是解决办法大该就只有一个.下面根据自身的安装及解决办法总结如下 ...

  8. Linux SSH远程文件/目录 传输

    Linux SSH远程文件/目录传输命令scp 2010年08月6日 上午 | 作者:VPS侦探 相信各位VPSer在使用VPS时会经常在不同VPS间互相备份数据或者转移数据,大部分情况下VPS上都已 ...

  9. QT win 安装配置

    QT windows 版安装配置 安装包:链接:https://pan.baidu.com/s/1LCj2V3xQ1wB9_7zmE5tV6Q 密码:bn9r 首先安装QT Creator 双击安装文 ...

  10. TCL基本语法

    所有的Tcl文件都以.tcl为扩展名. #!/usr/bin/tclsh puts "Hello, World!" TCL,我们使用新的行或分号终止代码前行.但分号不是必要的,如果 ...