• Go 语言接口


    Go 语言接口

    Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。

    实例

     1 /* 定义接口 */
     2 type interface_name interface {
     3    method_name1 [return_type]
     4    method_name2 [return_type]
     5    method_name3 [return_type]
     6    ...
     7    method_namen [return_type]
     8 }
     9 
    10 /* 定义结构体 */
    11 type struct_name struct {
    12    /* variables */
    13 }
    14 
    15 /* 实现接口方法 */
    16 func (struct_name_variable struct_name) method_name1() [return_type] {
    17    /* 方法实现 */
    18 }
    19 ...
    20 func (struct_name_variable struct_name) method_namen() [return_type] {
    21    /* 方法实现*/
    22 }

    实例

     1 package main
     2 
     3 import (
     4     "fmt"
     5 )
     6 
     7 type Phone interface {
     8     call()
     9 }
    10 
    11 type NokiaPhone struct {
    12 }
    13 
    14 func (nokiaPhone NokiaPhone) call() {
    15     fmt.Println("I am Nokia, I can call you!")
    16 }
    17 
    18 type IPhone struct {
    19 }
    20 
    21 func (iPhone IPhone) call() {
    22     fmt.Println("I am iPhone, I can call you!")
    23 }
    24 
    25 func main() {
    26     var phone Phone
    27 
    28     phone = new(NokiaPhone)
    29     phone.call()
    30 
    31     phone = new(IPhone)
    32     phone.call()
    33 
    34 }

    在上面的例子中,我们定义了一个接口Phone,接口里面有一个方法call()。然后我们在main函数里面定义了一个Phone类型变量,并分别为之赋值为NokiaPhone和IPhone。然后调用call()方法,输出结果如下:

    I am Nokia, I can call you!
    I am iPhone, I can call you!
  • 相关阅读:
    eclipse中文乱码问题解决方案
    修改Tomcat的JDK目录
    Tomcat 5.5 修改服务器的侦听端口
    HTML DOM教程 27HTML DOM Button 对象
    HTML DOM教程 24HTML DOM Frameset 对象
    Navicat for MySQL v8.0.27 的注册码
    HTML DOM教程 25HTML DOM IFrame 对象
    Tomcat 5.5 的下载和安装
    android manifest相关属性
    ubuntu10.04 下 eclipse 小结
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/7427820.html
Copyright © 2020-2023  润新知