HOME/Articles/

Structs as method parameter

Article Outline

In <a href="https://golang.org/">Golang</a> methods can take <a href="https://golangr.com/struct/">structs</a> as parameter. You may be familiar with this from other languages, where you post objects as <a href="https://golangr.com/methods/">method</a> parameter.

This is great, because while Go doesn't support object orientated programming in the traditional sense, this gives you the feel of objects.

Structs as method parameter

In this article we'll do an example where a method takes a struct as parameter. First we define a struct

type Student struct {
    name     string
    year     int
}

Then create a new struct "instance"

s1 := Student { name: "Sam", year:   1, }

Then you can call a method on the struct:

s1.displayYear()

So we have the golang code for this example below:

package main

import (
    "fmt"
)

type Student struct {
    name     string
    year     int
}

func (s Student) displayYear() {
    fmt.Printf("Student year of %s is %d\n", s.name, s.year)
}

func main() {
    s1 := Student { name: "Sam", year:   1, }
    s1.displayYear()
}

That outputs the data we passed as parameter

➜  go run example.go
Year of Sam is 1

You can create all kinds of structs to work with in your code:

    s1 := Student { name: "Sam", year:   1, }
    s2 := Student { name: "Amy", year:   5, }
    s3 := Student { name: "May", year:   3, }
    s4 := Student { name: "Yas", year:   4, }

On all of these you can call the same method

    s2.displayYear()
    s3.displayYear()
    s4.displayYear()