# Chapter 6. Functions

A function (also known as a procedure or a subroutine) is an independent section of code that maps zero or more input parameters to zero or more output parameters. As illustrated in Figure 6-1, functions are often represented as a black box.

In previous chapters, the programs we have written in Go have used only one function:

``func` `main``()` `{}``

We will now begin writing programs that use more than one function.

Let’s take another look at the following program from Chapter 5:

````func` `main``()` `{`
`xs` `:=` `[]``float64``{``98``,``93``,``77``,``82``,``83``}`

`total` `:=` `0.0`
`for` `_``,` `v` `:=` `range` `xs` `{`
`total` `+=` `v`
`}`
`fmt``.``Println``(``total` `/` `float64``(``len``(``xs``)))`
`}````

This program computes the average of a series of numbers. Finding the average like this is a very general problem, so it’s an ideal candidate for definition as a function.

The `average` function will need to take in a slice of `float64`s and return one `float64`. Insert this before the `main` function:

````func` `average``(``xs` `[]``float64``)` `float64` `{`
`panic``(``"Not Implemented"``)`
`}````

Functions start with the keyword `func`, followed by the function’s name. The parameters (inputs) of the function are defined like this: `name type, name type, …`. Our function has one parameter (the list of scores) that we named `xs`. After the parameters, we put the return type. Collectively, the parameters and the return type are known as the function’s ...

Get Introducing Go now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.