Shayegan Hooshyari
Written By
Shayegan Hooshyari
Software engineer @ Divar

A software engineer who wants to share.

graphql-go Tutorial - Introduction


Go is a modern general purpose programming language designed by google; best known for it’s simplicity, concurrency and fast performance. It’s being used by big players in the industry like Google, Docker, Lyft and Uber. If you are new to golang you can start from golang tour to learn fundamentals.

gqlgen is a library for creating GraphQL applications in Go.

In this tutorial we Implement a Hackernews GraphQL API clone with golang and gqlgen and learn about GraphQL fundamentals along the way. Source code and also this tutorial are available on Github at:

What is a GraphQL server?

A GraphQL server is able to receive requests in GraphQL Query Language format and return response in desired form. GraphQL is a query language for API so you can send queries and ask for what you need and exactly get that piece of data. In this sample query we are looking for address, title of the links and name of the user who add it:

query {


  "data": {
    "links": [
        "title": "our dummy link",
        "address": "",
        "user": {
          "name": "admin"

Schema-Driven Development

In GraphQL your API starts with a schema that defines all your types, queries and mutations, It helps others to understand your API. So it’s like a contract between server and the client. Whenever you need to add a new capability to a GraphQL API you must redefine schema file and then implement that part in your code. GraphQL has it’s Schema Definition Language for this purpose. gqlgen is a Go library for building GraphQL servers and has a nice feature that generates code based on your schema definition.

Next Chapter

Getting Started

Creating an app with gqlgen

Go to next chapter