This question already has an answer here:
- Calling method of named type 1 answer
I have a type wrapper in my code:
package my_package
import "github.com/gin-gonic/gin"
type Server *gin.Engine
It works perfectly fine to use it within my package like:
func NewServer() Server {
s:= Server(gin.Default())
// I can call *gin.Engine functions on my s here without problems
return s
}
In my test suite (which resides in another package) I import my package and get the Server type. However, when I try to call some "inherited" functions on it doesn't work.
server_test.go:68: server.ServeHTTP undefined (type my_package.Server has no field or method ServeHTTP)
What's going on?
EDIT
The solution I found is related to @jiang-yd answer below: Change the type to a embedding struct
type Server struct {
*gin.Engine
}
and change the "cast"
s := Server{gin.Default()}
</div>