У меня есть тип обертки в моем коде:Как псевдонимы типов работают в Go?
package my_package
import "github.com/gin-gonic/gin"
type Server *gin.Engine
Он отлично работает, чтобы использовать его в моем пакете как:
func NewServer() Server {
s:= Server(gin.Default())
// I can call *gin.Engine functions on my s here without problems
return s
}
В моем наборе тестов (который находится в другом пакете) вношу мой пакет и получить тип сервера. Однако, когда я пытаюсь вызвать некоторые «унаследованные» функции, он не работает.
server_test.go:68: server.ServeHTTP undefined (type my_package.Server has no field or method ServeHTTP)
Что происходит?
EDIT
Решение, которое я нашел связано с @ цзян-ярд ответ ниже: Изменение типа к вложению структуры
type Server struct {
*gin.Engine
}
и изменить "слепок"
s := Server{gin.Default()}
Спасибо. Это то, что я закончил делать. Мне просто нужно было узнать больше о типах go. – barksten