文档章节

GO接口

汤汤圆圆
 汤汤圆圆
发布于 2018/10/30 20:49
字数 319
阅读 10
收藏 0
package main

import (
	"fmt"
	"sort"
	"math/rand"
)

//接口不能包含变量,不能有方法的实现
type Usb interface{
	Start()
	Stop()
}

//Phone实现Usb接口
type Phone struct{

}

func (p Phone) Start() {
	fmt.Println("手机开始工作")
}
func (p Phone) Stop() {
	fmt.Println("手机停止工作")
}

//相机实现Usb接口
type Camera struct{

}

func (c Camera) Start() {
	fmt.Println("相机开始工作")
}

func (c Camera) Stop() {
	fmt.Println("相机停止工作")
}

type Computer struct{

}
func (c Computer) Working(usb Usb) {
	usb.Start()
	usb.Stop()
}

type Usb2 interface {
	Usb  //接口继承,要实现Usb2必须也要实现Usb的方法
	test()
}

type Student struct{
	Name string
	Age int
	Score float64
}

type StudentSlice []Student

//实现Interface接口
func(sl StudentSlice) Len() int {
	return len(sl)
}

func (sl StudentSlice) Less(i int, j int) bool {
	return sl[i].Score < sl[j].Score
}

func (sl StudentSlice) Swap(i int, j int) {
	//temp := sl[i]
	//sl[i] = sl[j]
	//sl[j] = temp
	//上面三行可以简写
	sl[i],sl[j] = sl[j],sl[i]
}

func main() {
	cp := Computer{}
	ca := Camera{}
	ph := Phone{}

	cp.Working(ca)
	cp.Working(ph)

	var usb Usb
	//usb.Start() //这样是不允许的

	usb = ca
	usb.Start();//这就可以

	var sl StudentSlice
	for i := 0; i < 10; i++ {
		stu := Student{
			Name: fmt.Sprintf("test|%d", rand.Intn(100)),
			Age: rand.Intn(100),
			Score: rand.Float64() * 100,
		}
		sl = append(sl, stu)
	}

	for _,v := range(sl) {
		fmt.Println(v)
	}
	fmt.Println("-------------------------")
	sort.Sort(sl) //排序后
	for _,v := range(sl) {
		fmt.Println(v) 
	}
}

© 著作权归作者所有

上一篇: GO 文件相关操作
下一篇: GO结构体
汤汤圆圆

汤汤圆圆

粉丝 11
博文 82
码字总数 26104
作品 0
昌平
程序员
私信 提问

暂无文章

Taro 兼容 h5 踩坑指南

最近一周在做 Taro 适配 h5 端,过程中改改补补,好不酸爽。 本文记录📝遇到的问题,希望为有相同需求的哥们👬节约点时间。 Taro 版本:1.3.9。 解决跨域问题 h5 发请求会报跨域问题,需...

dkvirus
53分钟前
3
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
3
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部