A function in Go (Golang) is a reusable block of code that performs a specific task.

Functions are a fundamental part of the programs we write. They can be defined and invoked like in many other programming languages, and they also promote modularity and readability of our code. In this post, we’ll take a close look at functions and explore some of the ways in which they can be used.

Syntax

Here’s the signature of a function:

func <name>(<parameters>) <return type> {
   // Body of the function
}

Functions declarations begin with the func keyword, followed by a name for function, then any comma-separated parameters, then the data type of the function’s return value (if any). 

Within the body of the function, we can include any custom logic we want. Note that by convention, function bodies should remain relatively short and “just do one thing.”

Here’s an example of a function that takes two integers as input and returns their sum:

package main

import "fmt"

func sum(x, y int) int {
 return x + y
}

func main() {
 fmt.Println(sum(41, 10)) // Output: 51
}

In the example above, the function sum accepts two parameters from the user: x and y, both of which are of type int. Then, when x + y is evaluated, the function returns a value of type int.

Note that we also defined a main function, a function with no parameters and no return value. This function serves as the “entry point” of a Go program. That is, the main function is what gets executed when you run a Go program. As such, when the program above is run, the main function invokes sum(41, 10) and prints 51 to the console.

Functions can have no parameters

Note that while functions can accept any number of parameters (as seen with the sum function), having any input parameters at all is entirely optional (as we’ve seen with the main function).

Functions without parameters are useful for cases in which you want to perform specific tasks that do not require any external input, or when inputs can be determined automatically by the function itself. For example, you might write a function to get the current time:

package main

import (
 "fmt"
 "time"
)

func getCurrentTime() {
 time := time.Now()
 fmt.Println("The current time is: ", time)
}

func main() {
 getCurrentTime()
}

You might also write a function that simply prints a fixed message:

package main

import "fmt"

func greeting() {
 fmt.Println("Hello world!")
}

func main() {
 greeting()
}

In each of these examples, the function name is followed by empty parentheses, indicating that the function does not take any parameters.

Functions can have multiple return values

In the examples above, we’ve seen functions with zero return values (i.e., getCurrentTime and greeting) as well as a function with a single return value (i.e., sum). Go also has built-in support for a function to have multiple return values. Consider the following example:

package main

import (
 "errors"
 "fmt"
)

func divide(a, b float64) (float64, error) {
 if b == 0 {
   return 0, errors.New("divided by zero")
 }

 return a / b, nil
}

func main() {
 fmt.Println(divide(8, 2))
 fmt.Println(divide(10, 0))
}

Here, the function divide accepts two float64 values as input: a and b. As a result of the operations in the function body, the function returns two values: the result of the division, as well as an error (if the second parameter is zero). As such, when divide(8, 2) is evaluated, we see 4 <nil> printed to the console. And when divide(10, 0) is evaluated, we see 0 divided by zero.

By returning multiple values, functions can provide more information and context to the user invoking the function, which can help with error handling and data processing.

Learn more about functions

Functions are a powerful feature of the Go programming language. They allow developers to encapsulate logic, define any input parameters from the user, and return many values. Functions are an essential feature for any programming language, and Go provides a robust and flexible implementation. For more information about functions and how to leverage them in the Go programs you write, enroll in Udacity’s Golang course.

Andrew Wong

Recent Posts

Udacity Unveils a Completely Revamped iOS Developer Nanodegree Program

Announcing iOS Development with SwiftUI and SwiftData The demand for iOS developers proficient in Swift…

6 days ago

Unlocking Dreams in Tech: Christopher Sledd’s Journey with the OneTen/BIT Scholarship

In a world driven by technology, finding the right opportunity to break into the tech…

1 week ago

AWS and Udacity Surpass $24 Million Worth of AI Programming Scholarships Awarded to Underserved Students in Less Than Three Years

This month, more than 1,000 people received notifications of their free enrollment in the AI…

2 weeks ago

6 Free Courses: Become A Google Cloud Digital Leader

Developers & IT Pros are harnessing the power of Google Cloud to solve real-world problems.…

2 weeks ago

New Course: Build the Future on Hedera

From Weekend Projects to Web3's Next Big Thing Ready to help shape the future of…

3 weeks ago

How Do I Become A Programmer? The 7-Step Guide

It might be obvious by now, but here at Udacity, we really love tech and…

3 weeks ago