Skip to content
Search

Go:Interface

lastmod 2025-11-27created 2025-11-192 edits

Example

package main

import "fmt"

type Calculator interface {
    plus() int
    minus() int
}

//Parameter 정의
type Parameter struct {
    n1, n2 int
}

//Parameter 타입에 대한 Calculator 인터페이스 구현
func (r Parameter) plus() int {
    return r.n1 + r.n2
}

func (r Parameter) minus() int {
    return r.n1 - r.n2
}

func showCalc(calc Calculator) {
    fmt.Println(calc.plus())
    fmt.Println(calc.minus())
}

func main() {
    r := Parameter{30, 20}
    showCalc(r)
}

Using it like a void pointer

func _PointCloudDataService_UploadStream_Handler(srv interface{}, stream grpc.ServerStream) error {
    return srv.(PointCloudDataServiceServer).UploadStream(&grpc.GenericServerStream[UploadRequest, dataops.UploadStreamResponse]{ServerStream: stream})
}

Using an srv interface{} argument as above has the same effect as void*.

To cast, use it like srv.(캐스팅할 인터페이스).~ (the placeholder means "interface to cast to").

See also

author Zer0 sitemap