Go의 인터페이스에 대한 간략한 소개
그래서 여기 내가 하나를 작성하고 모든 초보자를 돕기 위해 최선을 다하기로 결정했습니다.
인터페이스란 무엇입니까?
Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here. - Effective Go
기본적으로 인터페이스는 많은 메서드가 있는 유형임을 의미합니다.
자, 긴 말은 하지 않고 오늘 분명히 합시다.
코드 작성
목표: 두 숫자의 합과 빼기를 출력하는 두 가지 방법sum()
과 substr()
를 구현합니다.
1) 설정부터 시작하자
package main
import "fmt"
func main() {
}
2) 그런 다음 유형, 여기에 각각 두 개의 숫자 유형item1
이 있는 item2
및 float64
가 있습니다.
package main
import "fmt"
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
func main() {
}
3) 이제 코드가 작동하려면 몇 가지 지침(메서드)이 필요합니다.
package main
import "fmt"
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
// Method
func (a item1) sum() float64 {
return a.num1 + a.num2
}
// Method
func (a item1) substr() float64 {
return a.num1 - a.num2
}
// Method
func (b item2) sum() float64 {
return b.num1 + b.num2
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
func main() {
}
계속하기 전에 방법을 더 잘 이해합시다.
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
b
는 item2
에 대한 참조로 num1
내부 num2
및 item2
에 액세스하는 방법입니다. 그런 다음 이름substr()
, 반환 유형float64
및 반환 메서드가 있습니다.
4) result1
및 result2
구현 및 결과 출력:
package main
import "fmt"
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
// Method
func (a item1) sum() float64 {
return a.num1 + a.num2
}
// Method
func (a item1) substr() float64 {
return a.num1 - a.num2
}
// Method
func (b item2) sum() float64 {
return b.num1 + b.num2
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
// Result 1 & Result 2
func result1(i item1) {
fmt.Println("Sum: ", i.sum())
fmt.Println("Substr: ", i.substr())
}
func result2(i item2) {
fmt.Println("Sum: ", i.sum())
fmt.Println("Substr: ", i.substr())
}
func main() {
a := item1{num1: 10, num2: 5}
b := item2{num1: 20, num2: 10}
result1(a)
result2(b)
}
// Sum: 15
// Substr: 5
// Sum: 30
// Substr: 10
여기에서 a
및 b
두 개의 변수를 result1
및 result2
두 함수에 전달하고 결과를 얻었습니다.
그러나 여기에 문제가 있습니다.
Why do we need to write two functions (result1
and result2
) that basically do the same thing?
여기 당신이 기다리던 것이 있습니다: 인터페이스
5) 인터페이스 구현. 앞에서 언급했듯이 인터페이스는 메서드(함수)의 모음이 있는 유형입니다. 아래 메서드의 이름인 sum()
및 substr()
가 모두 있습니다.
package main
import "fmt"
type math interface {
sum() float64
substr() float64
}
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
// Method
func (a item1) sum() float64 {
return a.num1 + a.num2
}
// Method
func (a item1) substr() float64 {
return a.num1 - a.num2
}
// Method
func (b item2) sum() float64 {
return b.num1 + b.num2
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
func main() {
}
6) 결과를 인쇄하십시오:
package main
import "fmt"
type math interface {
sum() float64
substr() float64
}
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
// Method
func (a item1) sum() float64 {
return a.num1 + a.num2
}
// Method
func (a item1) substr() float64 {
return a.num1 - a.num2
}
// Method
func (b item2) sum() float64 {
return b.num1 + b.num2
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
func result(m math) {
fmt.Println("Sum: ", m.sum())
fmt.Println("Substr: ", m.substr())
}
func main() {
a := item1{num1: 10, num2: 5}
b := item2{num1: 20, num2: 10}
result(a)
result(b)
}
// Sum: 15
// Substr: 5
// Sum: 30
// Substr: 10
따라서 이제 math
인터페이스result
를 포함하면 됩니다. 그러면 sum()
섹션에서 한 번 호출하여 substr()
및 main()
에 액세스할 수 있습니다.
여기서 우리는 두 변수에 대해 한 번 result
를 호출하고 동일한 결과를 얻었습니다!
계속 ->
Thanks for reading my first ever published article!
Reference
이 문제에 관하여(Go의 인터페이스에 대한 간략한 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/shearytan/brief-introduction-to-interfaces-in-go-34dg
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here. - Effective Go
package main
import "fmt"
func main() {
}
package main
import "fmt"
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
func main() {
}
package main
import "fmt"
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
// Method
func (a item1) sum() float64 {
return a.num1 + a.num2
}
// Method
func (a item1) substr() float64 {
return a.num1 - a.num2
}
// Method
func (b item2) sum() float64 {
return b.num1 + b.num2
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
func main() {
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
package main
import "fmt"
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
// Method
func (a item1) sum() float64 {
return a.num1 + a.num2
}
// Method
func (a item1) substr() float64 {
return a.num1 - a.num2
}
// Method
func (b item2) sum() float64 {
return b.num1 + b.num2
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
// Result 1 & Result 2
func result1(i item1) {
fmt.Println("Sum: ", i.sum())
fmt.Println("Substr: ", i.substr())
}
func result2(i item2) {
fmt.Println("Sum: ", i.sum())
fmt.Println("Substr: ", i.substr())
}
func main() {
a := item1{num1: 10, num2: 5}
b := item2{num1: 20, num2: 10}
result1(a)
result2(b)
}
// Sum: 15
// Substr: 5
// Sum: 30
// Substr: 10
Why do we need to write two functions (result1
and result2
) that basically do the same thing?
package main
import "fmt"
type math interface {
sum() float64
substr() float64
}
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
// Method
func (a item1) sum() float64 {
return a.num1 + a.num2
}
// Method
func (a item1) substr() float64 {
return a.num1 - a.num2
}
// Method
func (b item2) sum() float64 {
return b.num1 + b.num2
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
func main() {
}
package main
import "fmt"
type math interface {
sum() float64
substr() float64
}
type item1 struct {
num1, num2 float64
}
type item2 struct {
num1, num2 float64
}
// Method
func (a item1) sum() float64 {
return a.num1 + a.num2
}
// Method
func (a item1) substr() float64 {
return a.num1 - a.num2
}
// Method
func (b item2) sum() float64 {
return b.num1 + b.num2
}
// Method
func (b item2) substr() float64 {
return b.num1 - b.num2
}
func result(m math) {
fmt.Println("Sum: ", m.sum())
fmt.Println("Substr: ", m.substr())
}
func main() {
a := item1{num1: 10, num2: 5}
b := item2{num1: 20, num2: 10}
result(a)
result(b)
}
// Sum: 15
// Substr: 5
// Sum: 30
// Substr: 10
Thanks for reading my first ever published article!
Reference
이 문제에 관하여(Go의 인터페이스에 대한 간략한 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shearytan/brief-introduction-to-interfaces-in-go-34dg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)