Golang之继承,多重继承(struct)
热乎的代码来了
- package main
- import "fmt"
- /*
- 继承
- 一个结构体嵌到另一个结构体,称作组合
- 匿名和组合的区别
- 如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法,从而实现继承
- 如果一个struct嵌套了另一个【有名】的结构体,那么这个模式叫做组合
- 如果一个struct嵌套了多个匿名结构体,那么这个结构可以直接访问多个匿名结构体的方法,从而实现多重继承
- */
- type Car struct {
- weight int
- name string
- }
- func (p *Car) Run() {
- fmt.Println("running")
- }
- type Bike struct {
- Car
- lunzi int
- }
- type Train struct {
- Car
- }
- func (p *Train) String() string {
- str := fmt.Sprintf("name=[%s] weight=[%d]", p.name, p.weight)
- return str
- }
- func main() {
- var a Bike
- a.weight =
- a.name = "bike"
- a.lunzi =
- fmt.Println(a)
- a.Run()
- var b Train
- b.weight =
- b.name = "train"
- b.Run()
- fmt.Printf("%s", &b)
- }
练习2
- package main
- import (
- "fmt"
- "time"
- )
- type Car struct {
- Name string
- Age int
- }
- func (c *Car) Set(name string, age int) {
- c.Name = name
- c.Age = age
- }
- type Car2 struct {
- Name string
- }
- //Go有匿名字段特性
- type Train struct {
- Car
- Car2
- createTime time.Time
- //count int 正常写法,Go的特性可以写成
- int
- }
- //给Train加方法,t指定接受变量的名字,变量可以叫this,t,p
- func (t *Train) Set(age int) {
- t.int = age
- }
- func main() {
- var train Train
- train.int = //这里用的匿名字段写法,给Age赋值
- //(&train).Set(1000)
- train.Car.Set("huas", )
- train.Car.Name = "test" //这里Name必须得指定结构体
- fmt.Println(train)
- }
Golang之继承,多重继承(struct)的更多相关文章
- golang 中 map 转 struct
golang 中 map 转 struct package main import ( "fmt" "github.com/goinggo/mapstructure&qu ...
- Golang 入门 : 结构体(struct)
Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...
- GOLANG的继承+接口语法练习
继承与接口同时存在 在Golang语言中,可以这么说:接口是继承的功能补充! 武当派有一个徒弟结构体,它继承WuDangMaster结构体的字段及方法 武林之中还有一个泰山北斗,名约少林派,少林入门神 ...
- golang 之 bson 与 struct 转换
bson的介绍不说了golang下的解析包找到2个 一个是mongo的http://labix.org/gobson,另外一个比较小众https://github.com/sbunce/bson这里用 ...
- golang将interface{}转换为struct
项目中需要用到golang的队列,container/list,需要放入的元素是struct,但是因为golang中list的设计,从list中取出时的类型为interface{},所以需要想办法把i ...
- GOLANG的继承语法练习
package main import( "fmt" _"sort" _"math/rand" ) // type WuDangMaster ...
- golang sqlx查询时, struct字段冲突
type TA struct { Id int64 `db:"id"` } type TB struct { Id int64 `db:"id"` } type ...
- golang 入门之struct继承,嵌套
package main import "fmt" type Jocongmin struct{ Name string Home string Want string } fun ...
- GO开发[五]:golang结构体struct
Go结构体struct Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继承在内的大量面向对象特性,只保留了组合(composition)这个最基础的特性 ...
随机推荐
- 判断设备(PC,安Android,iOS)
//判断是不是PC function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = new Array("An ...
- rancher下的kubernetes之二:安装rancher和kubernetes
在上一章<rancher下的kubernetes之一:构建标准化vmware镜像>,我们做了个通用的虚拟机镜像,可以root登录,apt已经更新,docker也装好了,现在我们就来安装ra ...
- WPF 中的 NameScope
我们在 WPF 中使用绑定时可以使用 ElementName=Foo 这样的写法,并且还能够真的在运行时找到这个名称对应的对象,是因为 WPF 中提供了名称范围概念. 实现 INameScope 接口 ...
- Rails Cookie和session使用
Rails通过cookies方法来操作cookie.这和session的操作有点相似 class CommentsController < ApplicationController def n ...
- Python3 机器学习
Python 3 生成手写体数字数据集 Python 3 利用 Dlib 19.7 和 sklearn机器学习模型 实现人脸笑脸检测 Python 3 利用 Dlib 19.7 实现人脸检测和剪切 P ...
- 使用C#的两种方式OracleClient组件和OleDB组件连接ORACLE数据库
一.使用OracleClient组件连接Oracle .Net框架的System.Data.OracleClient.dll组件(ADO.Net组件),为连接和使用Oracle数据库提供了很大的方便. ...
- Ubuntu14.04下Sublime Text 3解决无法输入中文
在Ubuntu 14.04中安装了SublimeText 3之后发现既然不支持输入中文,于是在网上搜罗一下,发现很多人遇到了同样的问题,但是解决办法大该就只有一个.下面根据自身的安装及解决办法总结如下 ...
- Linux SSH远程文件/目录 传输
Linux SSH远程文件/目录传输命令scp 2010年08月6日 上午 | 作者:VPS侦探 相信各位VPSer在使用VPS时会经常在不同VPS间互相备份数据或者转移数据,大部分情况下VPS上都已 ...
- QT win 安装配置
QT windows 版安装配置 安装包:链接:https://pan.baidu.com/s/1LCj2V3xQ1wB9_7zmE5tV6Q 密码:bn9r 首先安装QT Creator 双击安装文 ...
- TCL基本语法
所有的Tcl文件都以.tcl为扩展名. #!/usr/bin/tclsh puts "Hello, World!" TCL,我们使用新的行或分号终止代码前行.但分号不是必要的,如果 ...