Data types define the type of data that a variable can hold. Golang is a statically typed language meaning that a variable needs to define the type of value it will store and once defined, the variable can not store value of any other type.
Golang support many different data types, all of which are explained in this section.

bool
bool data type in Golang represents a boolean value. A boolean type can have only 2 values: true or false. A variable of boolean type is declared using bool keyword. Example,

package main

import "fmt"

func main() {
   var flag bool
   fmt.Printf("Type of variable is %T", flag)
}

Above program will print

Type of variable is bool

You can also explicitly assign true or false to a bool variable as var flag bool = true. Default value of a bool variable is false, meaning, if you don’t assign a value to variable, it will be initialized to false.

string
A string is a sequence of one or more characters enclosed between double quotes. A string data type is declared using keyword string. Example,

var string s = "codippa"

Remember that you need to use double quotes to define a string in Golang, you cannot use both single or double quotes as in some programming languages such as python or javascript.
Numeric types
All numbers fall under the category of numeric types but there are sub-types of this category which are classified according to the type of numbers. They are
Integer
This data type is used to represent whole numbers or values without decimal or fraction. Examples of this data type are summarized in the table below.

KeywordDescriptionExample
uint8Used to store positive integers from 0 to 255.
Unsigned means only positive integers.
var num uint8 = 10
uint16Used to store integers from 0 to 65535.
Unsigned means only positive integers.
var num uint16 = 10000
uint32Used to store integers from 0 to 4294967295, which is 2^32.
Unsigned means only positive integers.
var num uint32 = 3000000000
uint64Used to store integers from 0 to 18446744073709551615, which is 2^64.
Unsigned means only positive integers.
var num uint64 = 50000000000
int8Signed equivalent of uint8.
Can store both negative and positive values in range -128 to 127.
var num int8 = -105
int16Same as above with range between -32768 and 32767var num int16 = 25000
int32Same as above with range between -2147483648 and 2147483647var num unint32 = 1232312323
int64Same as above with range between -9223372036854775808 and 9223372036854775807var num uint64 = 233243434342323

Floating point numbers
Used for decimal values such as 12.56, 99.98723 etc. There are only two variants of this data type depending on the system architecture as

KeywordDescriptionExample
float32Used to store floating point or decimal values.
Range of this type is -3.4E+38 to 3.4E+38.
var float32 num = 1000000000.000
float64This data type is same as float32 but with a much larger range of -1.7E+308 to 1.7E+308.var float64 num = 2222222222222222.88
complex32Complex numbers with real and imaginary parts whose range is the same as that of float32.var num complex32 = 2 + 3i
complex64Same as complex32 but with a higher range of float64.var num complex64 = 2.232 + 5.54i


Other numeric types

There are other data types in Golang which are variants of the types that have been already discussed above. They are.

KeywordDescriptionExample
byteSame as uint8. If you declare a variable of this type and print its type, it will be uint8.var byte = 125
runeSame as uint32.var rune = 123432565
uintEither 32 or 64 bit integer(that is, same as uint32 or uint64) depending on the system architecture.var uint = 123432565
intSame as uintvar int = 123432565

Note that even though uint and uint32 or uint64 may be same on a machine but you cannot assign a variable of type uint to a variable of type uint32 or uint64 and vice-versa. Doing so will raise an error. Example,

var x int = 125
var y uint = x

Above code sample will result in an error.

cannot use x (type int) as type uint in assignment

An explicit cast is required to use uint, int, uint32 and uint64 interchangeably.
Other Types
Other data types include
Arrays
Structures
Functions
Pointers
Interfaces
Maps
Channels
You will learn about them in great detail in later sections.

Leave a Reply