热乎的代码来了

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)的更多相关文章

  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. tensorflow中共享变量 tf.get_variable 和命名空间 tf.variable_scope

    tensorflow中有很多需要变量共享的场合,比如在多个GPU上训练网络时网络参数和训练数据就需要共享. tf通过 tf.get_variable() 可以建立或者获取一个共享的变量. tf.get ...

  2. 递归遍历嵌套结构(多层List)中的元素 ------Python

    读Python基础教程(第二版)后看到了这么一个东西,就是利用递归遍历嵌套结构中的元素. 上代码: #encoding:UTF-8 def flatten(nested): try: #不要迭代类似字 ...

  3. 每天一个linux命令(网络):【转载】ping命令

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试”. ...

  4. web 安全相关(一):Log注入(转)

    在网上有很多关于安全的文章,但是 OWASP 开发指导 涵 盖了几乎所有关于Web站点安全的东西.(注:OWASP(开放Web应用安全项目- Open Web Application Security ...

  5. [C#] DataTable转成List集合

    项目开发中,经常会获取到DataTable对象,如何把它转化成一个List对象呢?前几天就碰到这个问题,网上搜索整理了一个万能类,用了泛型和反射的知识.共享如下: public class Model ...

  6. python下的select模块使用 以及epoll与select、poll的区别

    python下的select模块使用 以及epoll与select.poll的区别 先说epoll与select.poll的区别(总结) 整理http://www.zhihu.com/question ...

  7. oracle之 关闭透明大页

    方法一: 1.设置/etc/grub.conf文件,添加 transparent_hugepage=never ,在系统启动是禁用 [root@hbdw1 ~]# cat /etc/grub.conf ...

  8. DCI改进,发布后作业乱码不能打开

    1.发布后作业不能打开问题,找到com.comsys.net.cn.dci.ui.dialog.PublishesDialog 的960行,改为这样: //以前没有指定文件编码前,采用系统默认编码 / ...

  9. GNU Radio: 射频子板

    本文简要介绍 USRP 配套的子板参数信息. 射频子板WBX-40 性能特点 频率覆盖:50 MHz – 2.2GHz 最大信号处理带宽:40MHz 行为描述 WBX-40提供高宽带收发器,可提供高达 ...

  10. 智能家居入门DIY——【六、使用OneNet后台处理数据】

    OneNet使用起来要比lewei50复杂一些,它没有前台需要自己开发.命令下发也和之前介绍的lewei50有一些区别,这里着重介绍一下使用MQTT协议来进行通讯. 一.准备 1.Esp8266开发板 ...