What is a package
A package is a logical organization or a grouping of files. A package can contain multiple files that belong to it.
Consider a package as a folder on a computer which contains multiple files.
Following illustration will clarify the concept and architecture of a go package.
where mypackage is the name of package containing three go files.
Packages are created to avoid naming conflicts in an application. If two different teams are working on an application, then they can create functions or variables with the same name by creating different packages since you can not have same names in different files in the same package.
A file in go is declared to be belonging to a package using the
packagestatement followed by the name of the package.
packagestatement should be the first statement in a go file. Example,
package game /* more code */
It is mandatory to write
package statement in a go file. This means that every go file should belong to a package.
If you omit the
package statement, then following error will be generated.
expected ‘package’, found ‘import’
'import' is the first statement in a file.
Package naming convention
Name of the package can be any user defined name confining to below rules.
- It must not start with a number or a special character.
- It should start with an alphabet. Starting with an underscore is allowed but it should not.
- Package name can not contain special characters, only alphabets, numbers and underscore is permitted.
- Lower case package names are recommended. All builtin packages of go are defined in lower case.
It is possible to import other packages in a file using an import statement. An import statement begins with
import keyword followed by the name of package in quotes.
An example of import statement is
import "fmt"which is what we did while learning to write the first Go program, where fmt is the name of a package.
Importing multiple packages
Any number of packages can be imported in a single Go file. There are two syntax to import multiple packages.
1. Multiple import statements
Write an import statement for each package to import which means that there will be multiple import statements as well. Example,
import "fmt" import "os" import "mypackage"
2. Single import statement
Another and more used method of importing multiple packages is by enclosing the package names in parenthesis and a single import statement. Example,
import ( "fmt" "os" "mypackage" )
Don’t Miss these!
Following points should be remembered regarding go packages.
- All files in a folder should belong to the same package. This means that if there are 2 files A.go and B.go under folder test, then both the files should have the same package name.
- It is not necessary that the name of package should match the name of the folder. Thus, both the files can have mypackage as the package name but it should be same in both the files.
- Two files in the same package can not have a function or a variable declared with the same name. Thus, if A.go and B.go lie in package test, then they can not contain a function with the same name. Doing that would raise an error.
print redeclared in this block
previous declaration at .\A.go
- You can not import same package more than 1 time in the same file.
imported and not used: “fmt”
- If you import a package then you should use it else an error will raised.
fmt redeclared as imported package name
Types of packages
There are two types of packages in go programming language.
An executable package is one which can be run or executed. A go application can have only one executable package and it should be declared with the name main.
Also, the executable package should contain a file having
main function. In simple terms, a go file which is executed should belong to package main.
These are helper packages having files that contain reusable code. Library packages are never executed. All of standard go packages are Library packages only.