CRCMS

致力于打造全面化的开源CMS系统

大道至简


Golang Interface 基础示例一

路径interfaces/demo.go

1
2
3
4
5
6
7
8
9
10
11
12
package interfaces

type Summationer interface {
Sum(param1, param2 int) int
}

type Summation struct {
}

func (s *Summation) Sum(param1, param2 int) int{
return param1 + param2
}

main调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package main

import (
"fmt"
"interfaces"
)

func main() {
// Go的接口是动态的

// 申明一个结构体
sum_struct := new(interfaces.Summation)

// 给当前结构体对象增加一个接口
//var sumInter interfaces.Summationer
//sumInter = sum_struct

// 或者使用如下方法
// sumInter := interfaces.Summationer(sum_struct)

// 或者,这样其实接口也是通的,但并没有什么太大意义
// 语法上看不出来结构体实现了此接口
sumInter := sum_struct

fmt.Println(testInterface(sumInter))
}

func testInterface(s interfaces.Summationer) int {
return s.Sum(1, 2)
}