Home »
        Golang »
        Golang FAQ
    
        
    What is the difference between := and = in Go language?
    
    
    
    
        Go := and = difference: In this tutorial, we are going to learn the difference between := and =.
        
            Submitted by IncludeHelp, on October 01, 2021
        
    
    In the Go programming language, the = is known as an assignment operator which is used to assign the value/expression to the left side variable/constant. While := is known as the short variable declaration which takes the following form,
variable_name := expression
    The above statement assigns the value and determines the type of the expression. In such kind of declaration, there is no need to provide the type of the value/expression.
    So, a short variable declaration (:=) required a value while declaring a new variable.
    
    Consider the below example – demonstrating the difference between = and :=
Example 1:
// Go program to demonstrate the
// difference between = and :=
package main
import (
	"fmt"
)
func main() {
	// Simple declaration & assignment
	var x int = 10
	// Shorthand declaration
	y := 20
	// Printing the values and types of both
	fmt.Printf("x = %T, %v\n", x, x)
	fmt.Printf("y = %T, %v\n", y, y)
}
Output:
x = int, 10
y = int, 20
    See the output – the variable x is declared and assigned using the = operator and the variable y is declared and assigned using the := operator. In the first case, the var keyword and type are required while in the second case, the var keyword and type are not required.
Example 2:
// Go program to demonstrate the
// difference between = and :=
package main
import (
	"fmt"
)
func main() {
	// Declare & assign using :=
	x, y, z := 10, 20, 30
	// Printing the types and values
	fmt.Printf("%T, %v\n", x, x)
	fmt.Printf("%T, %v\n", y, y)
	fmt.Printf("%T, %v\n", z, z)
	// Updating the values using =
	x, y, z = 100, 200, 300
	// Printing the types and values
	fmt.Printf("%T, %v\n", x, x)
	fmt.Printf("%T, %v\n", y, y)
	fmt.Printf("%T, %v\n", z, z)
}
Output:
int, 10
int, 20
int, 30
int, 100
int, 200
int, 300
    
    Golang FAQ »
        
    
    
  
    Advertisement
    
    
    
  
  
    Advertisement