首页 > 其他分享 >golang接口

golang接口

时间:2022-12-21 15:37:23浏览次数:38  
标签:string addStudent result2 接口 result1 golang result Student

1. Constrained Generic Type

package main

import (
	"fmt"
)

type Stringer = interface {
    String() string
}

type Integer int

func (i Integer) String() string {
    return fmt.Sprintf("%d", i)
}

type String string

func (s String) String() string {
    return string(s)
}

type Student struct {
    Name string
    ID   int
    Age  float64
}

func (s Student) String() string {
    return fmt.Sprintf("%s %d %0.2f", s.Name, s.ID, s.Age)
}

func addStudent[T Stringer](students []T, student T) []T {
    return append(students, student)
}

func main() {
    students := []String{}
    result := addStudent[String](students, "Michael")
    result = addStudent[String](result, "Jennifer")
    result = addStudent[String](result, "Elaine")
    fmt.Println(result)

    students1 := []Integer{}
    result1 := addStudent[Integer](students1, 45)
    result1 = addStudent[Integer](result1, 64)
    result1 = addStudent[Integer](result1, 78)
    fmt.Println(result1)

    students2 := []Student{}
    result2 := addStudent[Student](students2, Student{"John", 213, 17.5})
    result2 = addStudent[Student](result2, Student{"James", 111, 18.75})
    result2 = addStudent[Student](result2, Student{"Marsha", 110, 16.25})
    fmt.Println(result2)
}

2. Constrained Generic Type

package main

import (
    "fmt"
)

type Student struct {
    Name string
    ID   int
    Age  float64
}

func addStudent[T any](students []T, student T) []T {
    return append(students, student)
}

func main() {
    students := []string{}
    result := addStudent[string](students, "Michael")
    result = addStudent[string](result, "Jennifer")
    result = addStudent[string](result, "Elaine")
    fmt.Println(result)

    students1 := []int{}
    result1 := addStudent[int](students1, 45)
    result1 = addStudent[int](result1, 64)
    result1 = addStudent[int](result1, 78)
    fmt.Println(result1)

    students2 := []Student{}
    result2 := addStudent[Student](students2, Student{"John", 213, 17.5})
    result2 = addStudent[Student](result2, Student{"James", 111, 18.75})
    result2 = addStudent[Student](result2, Student{"Marsha", 110, 16.25})
    fmt.Println(result2)
}

标签:string,addStudent,result2,接口,result1,golang,result,Student
From: https://www.cnblogs.com/liujitao79/p/16996352.html

相关文章

  • 判断接口是否支持跨域
    打开浏览器,右键,选择检查,选择console  输入测试代码,然后回车,正常返回即可跨域请求get请求varxhr=newXMLHttpRequest();xhr.open('GET','url');xhr.sen......
  • golang如何打印变量类型,golang list如何把元素转换为可用类型
    golang打印变量类型方法glist=list.New()fmt.Printf("%T",mylist)结果:*list.Listgolang把list中的any类型转化为目的类型zz:=new(XNSSS)glist.PushBack(zz)f......
  • Go语言接口类型的合理使用
    dog:=Dog{"littlepig"}varpetPet=&dog我们声明并初始化一个Dog类型的变量dog,然后它的指针赋给类型为Pet的变量pet对于一个接口类型的变量来讲,如上面的变量pet......
  • Vue-router4.0接口快速识别
    Vue-router4.0接口快速识别<router-link> :将会被渲染a标签属性名属性类型属性作用tostring/object相当于跳转调用router.push(string/object)replacebo......
  • 实现继承与接口继承区别
    实现继承通常情况下表现为对抽象类的继承,而其与接口继承在规则上有以下几点归纳:·抽象类适合于有族层概念的类间关系,而接口最适合为不同的类提供通用功能。·接口着重于C......
  • SAP发布HTTP接口
    1、创建类 引用标准接口改写集成的接口方法 此处仅实现POST方法,将传入的JSON报文转为函数传入参数,调用获取物料接口,并将返回的物料信息,转换为JSON报文返回METH......
  • 基于.NetCore开发博客项目 StarBlog - (24) 统一接口数据返回格式
    前言开发接口,是给客户端(Web前端、App)用的,前面说的RESTFul,是接口的规范,有了统一的接口风格,客户端开发人员在访问后端功能的时候能更快找到需要的接口,能写出可维护性更高的......
  • RS232接口电路
    1. DB9串口引脚定义        2. RS232简介    (1)逻辑0:+3~+15V        逻辑1: -3~-15V    (2)传输速率<1M,传输距离......
  • RS485接口电路
    1. RS485简介 (1)差分传输,半双工通信(2)传输速率最高可达10M,传输距离最远能到1000米。(RS232传输速率<1M,通信距离<15米)(3)发送端A、B之间的电压差:H:+2~+6V,L:-2~-6V(4)接收端A......
  • java中的接口
    本文主要讲述java的接口,以其相关细节。老韩接口的介绍:老韩接口的细节:老韩继承类vs接口实现老韩接口的多态性 1)接口的多态性示意图,如下图所......