DEV Community

loading...

Functions in Go.

codehakase profile image Francis Sunday ・2 min read

In this part of the series, we're going to look at Functions, and how they work in Go.

What is a Function?

A function is a block of code that performs a specific task. A function takes an input, performs some calculations on the input and generates an output.

There are two types of functions you'd make use of in Go. 1) User-defined and 2) Standard functions.

User-defined Functions

This type of function, we create ourselves to perform a specific task in a program.

Declaration

Here's the syntax to declare a function:

...

func sayHello() {

  fmt.Println("Hello World!")  
}

In the sample code above, we declared a function sayHello which prints the string Hello World when the function is called. Every function in Go, starts with the func keyword followed by the function name (we'll talk about naming conventions in a later article), and parenthesis, and then a block wrapped in between curly braces ({ }).

...

func greet(name string) {

  fmt.Println("Hello " + name)
}

The example above is another function, this time it takes in a parameter. See parameters as pieces of information that further defines a Function. In the code above, we declared a function greet which accepts a parameter name of type string. Calling this function is straight and simple:

...

func main() {

 greet("Francis Sunday")
}

func greet(name string) { ... }

PS: When using parameters, its required to explicitly define its type.


package main 

import "fmt"

func split(number int) (int, int) {

  x := number * 4 / 9
  y := number - x

  return
}

func main() {

  x, y := split(100)

  fmt.Println("%d + %d = 100", x, y)
}

In the code above, we declare a function split which accepts a single integer as a parameter number. The function takes a parameter of type int, and returns two numbers of type int that sums up to the input parameter.

Running the program you should get the following:

$ go run functions.go

44.44 + 55.56 = 100

In this article, we've looked at Functions in Go, how they help use organize repetitive tasks into smaller blocks of code we can reuse any where in our program. In a later article in this series, we'd explore more on Functions.

Feel free to leave a comment if I've missed something important.

Discussion

pic
Editor guide
Collapse
dean profile image
Dean Bassett

Looks like on the last part you print out integers using %d, but your output looks like they were printed using %.2f

Other than that, great article! I love using Go, it’s a very fun language, and is surprisingly efficient as well!

Collapse
codehakase profile image
Francis Sunday Author

Thanks Dean for pointing that out

Collapse
hjfitz profile image
Harry

What's with the empty looking return in split()?

Collapse
dean profile image
Dean Bassett

It’s not empty, in Go, the return type is after the function parameters. In this case, split returns (int, int), meaning it returns two integers

Collapse
hjfitz profile image
Harry

I understand that (int, int) means that it returns two integers, but I'm not sure where you state which integers?

It has me wondering because, in a function with more than two integers, what is returned?

func foo(a int) (int, int) {
  x := 1;
  y := 2;
  z := a * (x + y);
  return
}
Thread Thread
dean profile image
Dean Bassett

Oh I see. Looks like the author forgot to put in the returned values, didn’t notice that!

Thread Thread
codehakase profile image
Francis Sunday Author

Oh.. I meant to use that syntax since I only had two variables I wanted to return. Thanks for your observations anyways.