codingstuff.io
ExploreTutorialsProblemsCS Subjects
Get Started
ExploreTutorialsProblemsCS Subjects
Get Started
codingstuff.io

Master the art of building software through interactive tutorials, real-world problems, and guided projects.

Pune, Maharashtra, India

codingstuffmail@gmail.com

Product

  • Explore
  • Tutorials
  • Problems
  • CS Subjects

Company

  • About
  • Contact
  • Privacy Policy
  • Terms & Conditions
  • Sitemap

© 2026 codingstuff.io. All rights reserved.

Built with ❤️ for developers everywhere

/
/
All Tutorials
🐹

Go (Golang)

15 / 72 topics
11Arrays12Slices13Maps14Structs15Methods16Interfaces
Tutorials/Go (Golang)/Methods
🐹Go (Golang)

Methods

Updated 2026-05-15
10 min read

Methods

Introduction

In the world of programming, especially in object-oriented languages, methods are functions that are associated with objects. They define the behaviors and actions that an object can perform. In Go, while it is not a fully object-oriented language like Java or C++, you can still add methods to types, which allows for a more structured and organized codebase.

In this tutorial, we will explore how to add methods to types in Go, understand their syntax, and see practical examples of how they can be used. By the end of this section, you should have a solid understanding of how to define and use methods in Go.

Concept

Methods in Go are functions that are associated with a specific type. They allow you to add functionality directly to your types, making your code more modular and easier to manage. A method is defined by specifying the receiver, which is the type to which the method belongs, followed by the function signature.

The syntax for defining a method is as follows:

func (receiver Type) methodName(parameters) returnType {
    // Method implementation
}

- **Receiver**: The receiver is specified before the method name and consists of a variable name and the type it represents. This variable can be used within the method to access the fields of the type.
- **Method Name**: The name of the method, which follows the same naming conventions as functions.
- **Parameters**: Any parameters that the method might need, similar to regular functions.
- **Return Type**: The return type of the method, if any.

## Examples

Let's dive into some examples to see how methods work in Go.

### Example 1: Basic Method

Suppose we have a `Rectangle` struct and we want to add a method to calculate its area.

```go
<CodeBlock language="go">
{`package main

import "fmt"

type Rectangle struct {
    Width  float64
    Height float64
}

// Method to calculate the area of the rectangle
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func main() {
    rect := Rectangle{Width: 10, Height: 5}
    fmt.Println("Area:", rect.Area())
}`}
</CodeBlock>

In this example:

  • We define a Rectangle struct with Width and Height fields.
  • We add an Area method to the Rectangle type. The receiver is (r Rectangle), which means the method can access the Width and Height fields of the Rectangle.
  • In the main function, we create a Rectangle instance and call the Area method to calculate its area.

Example 2: Pointer Receiver

Sometimes, you might want to modify the receiver within a method. To do this, you can use a pointer receiver.

<CodeBlock language="go">
{`package main

import "fmt"

type Counter struct {
    Count int
}

// Method with a pointer receiver to increment the count
func (c *Counter) Increment() {
    c.Count++
}

func main() {
    counter := Counter{Count: 0}
    fmt.Println("Initial Count:", counter.Count)
    
    counter.Increment()
    fmt.Println("After Increment:", counter.Count)
}`}
</CodeBlock>

In this example:

  • We define a Counter struct with a single field Count.
  • We add an Increment method to the Counter type. The receiver is (c *Counter), which means the method can modify the Count field of the Counter.
  • In the main function, we create a Counter instance and call the Increment method to increase its count.

Example 3: Method on Non-Struct Types

Methods are not limited to structs. You can define methods on any named type, including custom types based on existing types.

<CodeBlock language="go">
{`package main

import (
    "fmt"
    "math"
)

type Circle struct {
    Radius float64
}

// Method to calculate the circumference of the circle
func (c Circle) Circumference() float64 {
    return 2 * math.Pi * c.Radius
}

func main() {
    circle := Circle{Radius: 5}
    fmt.Println("Circumference:", circle.Circumference())
}`}
</CodeBlock>

In this example:

  • We define a Circle struct with a single field Radius.
  • We add a Circumference method to the Circle type. The receiver is (c Circle), which means the method can access the Radius field of the Circle.
  • In the main function, we create a Circle instance and call the Circumference method to calculate its circumference.

What's Next?

Now that you understand how to add methods to types in Go, the next step is to explore interfaces. Interfaces allow you to define a set of methods that a type must implement, providing a way to write more flexible and reusable code. Stay tuned for our next tutorial on interfaces!

By mastering methods and interfaces, you'll be well on your way to writing robust and maintainable Go applications. Happy coding!


PreviousStructsNext Interfaces

Recommended Gear

StructsInterfaces