Trusted answers to developer questions

What is type int32 in Golang?

Faraz Karim

Grokking the Behavioral Interview

Get Educative’s popular interview prep course for free.

In the Go programming language, variables are containers marked by identifiers or names, which can hold different values in a program. These variables can hold all different data types, whether they are numbers, words, or any other type. To restrict the type of data stored inside these variables, we need to specify the data type of the variables.

int is one of the available numeric data types in Go used to store signed integers. int32 is a version of int that only stores signed numeric values composed of up to 32 bits. For example, if you try to store a string value in it, or an integer beyond what can be made using 32 bits, the program would return an error or result in an integer overflow.

Similar variants

The numeric data type of int has several other versions in addition to int32, which include:

  • int8
  • int16
  • int64
  • uint8
  • uint16
  • uint32
  • uint64

The data types starting from int store signed integers while those starting with uint contain unsigned integers, and the numeric value that follows each data type represents the number of bits stored.


A variable of type int32 can store integers ranging from -2147483648 to 2147483647.

If an int32 variable is assigned a value beyond the range mentioned above, then an overflow error occurs, which basically means that the int32 variable cannot properly store the assigned number.


The following code shows the positive limit of the values that an int32 variable can store and what happens if you try storing something larger than the stipulated range of values:

package main
import "fmt"
func main() {
// initializing with the maximum allowed positive number
var num int32 = 2147483647
// printing the value and data type
fmt.Printf("Value is: %d and type is: %T\n", num, num);
// making the value out of range by incrementing by 1
num = num+1
// printing out new value and type
fmt.Printf("Value is: %d and type is: %T\n", num, num);

As we can see from the outputs of the code above, when we stored the value 2147483647 in num and printed it, the value came out to be 2147483647. However, just incrementing it by 1 pushed it out of the allowed range, which resulted in the stored value being interpreted as -2147483648 when printed again. When this happens, we call it an overflow.


In the following example, we declare a variable num explicitly stating its data type to be int32. Later, we can use the Printf function to see that num is indeed stored as an int32 data type:

package main
import "fmt"
func main() {
var num int32
num = 200
fmt.Printf("Data type of %d is %T\n", num, num);

It is also possible to create const values of type int32 instead of variables. The only difference is that const values are just variables whose values can not be changed from what it was initialized to. We then check the stored data type again by printing it out using the Printf function.

const values must be declared and initialized in the same line.

package main
import "fmt"
func main() {
// declaring and initializing a const value with an integer
const c_num int32 = 200
// %T represents the type of the variable num
fmt.Printf("Data type of %d is %T\n", c_num, c_num);




Faraz Karim
Copyright ©2023 Educative, Inc. All rights reserved
Trusted Answers to Developer Questions

Related Tags

Keep Exploring
Related Courses