博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang之interface(多态,类型断言)
阅读量:5073 次
发布时间:2019-06-12

本文共 2215 字,大约阅读时间需要 7 分钟。

多态用法

package main//一种事物的多种形态,都可以按照统一的接口进行操作//多态import (    "fmt"    "math/rand"    "sort")type Student struct {    Name     string    Id       string    Age      int    sortType int}type Book struct {    Name   string    Author string}//切片默认传地址type StudentArray []Studentfunc (p StudentArray) Len() int {    return len(p)}func (p StudentArray) Less(i, j int) bool {    return p[i].Name < p[j].Name}func (p StudentArray) Swap(i, j int) {    p[i], p[j] = p[j], p[i]}func main() {    var stus StudentArray    for i := 0; i < 10; i++ {        stu := Student{            Name: fmt.Sprintf("stu%d", rand.Intn(100)),            Id:   fmt.Sprintf("110%d", rand.Int()),            Age:  rand.Intn(100),        }        stus = append(stus, stu)    }    for _, v := range stus {        fmt.Println(v)    }    fmt.Println("\n\n")    sort.Sort(stus)    for _, v := range stus {        fmt.Println(v)    }}

 接口嵌套

package mainimport "fmt"//接口嵌套 一个接口可以嵌套在另外的接口type Reader interface {    Read()}type Writer interface {    Write()}type ReadWriter interface {    Reader    Writer}type File struct {}func (f *File) Read() {    fmt.Println("read data")}func (f *File) Write() {    fmt.Print("write data")}func Test(rw ReadWriter) {    rw.Read()    rw.Write()}func main() {    var f File    Test(&f)}

 类型断言

package mainimport "fmt"type Student struct {    Name string    Sex  string}//类型断言//一个判断传入参数类型的函数func just(items ...interface{}) {    for index, v := range items {        switch v.(type) {        case bool:            fmt.Printf("%d params is bool,value is %v\n", index, v)        case int, int64, int32:            fmt.Printf("%d params is int,value is %v\n", index, v)        case float32, float64:            fmt.Printf("%d params is float,value is %v\n", index, v)        case string:            fmt.Printf("%d params is string,value is %v\n", index, v)        case Student:            fmt.Printf("%d params student,value is %v\n", index, v)        case *Student:            fmt.Printf("%d params *student,value is %v\n", index, v)        }    }}func main() {    var b Student = Student{        Name: "stu01",        Sex:  "female",    }    just(28, 8.2, "this is a test", b, &b)}

 

转载于:https://www.cnblogs.com/pyyu/p/8283418.html

你可能感兴趣的文章
c#自定义控件中的事件处理
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
关于indexOf的使用
查看>>
英语单词
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
新手Python第一天(接触)
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
codevs 1080 线段树练习
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>