package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
type greeter interface {
greet() string
}
func newGreeter(isForStudent bool) greeter {
if isForStudent {
return &mentor{firstName: "Daniel", lastName: "Evteev"}
}
return &gitHubUser{nickname: "qyteboii a.k.a snowwyd"}
}
type mentor struct {
firstName, lastName string
}
func (m *mentor) greet() string {
return fmt.Sprintf("Hi, I'm %s %s - your Golang mentor!", m.firstName, m.lastName)
}
type gitHubUser struct {
nickname string
}
func (ghu *gitHubUser) greet() string {
return fmt.Sprintf("Hi, I'm %s, nice to meet your eyes on this text yo!", ghu.nickname)
}
type greetRequest struct {
IsStudent bool `json:"is_student"`
}
func greet(c *gin.Context) {
var req greetRequest
c.ShouldBindJSON(&req)
greeter := newGreeter(req.IsStudent)
c.JSON(http.StatusOK, gin.H{"greeting_text": greeter.greet()})
}
func main() {
router := gin.Default()
router.POST("/greet", greet)
if err := router.Run("localhost:809"); err != nil {
panic(err)
}
}I'm currently working on
- Huge mastery project
- Security Signature Utility
- Go mentorship site
Learning now
- Huge Go expert roadmap
- Obsidian features
- GitHub Pages syntax
Contact me
- Telegram: @qyteboii



