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").