Expected <type>, but got <type> error in Golang

In Golang, the "expected <type>, but got <type>" error occurs when you pass an argument of the wrong type to a function. This error indicates that the function was expecting a certain type of argument, but instead received a value of a different type.

Let's consider an example to understand this error. Consider the following Golang program:

Example

package main

import "fmt"

func printString(str string) {
    fmt.Println(str)
}

func main() {
    var num int = 123
    printString(num)
}

In this program, we define a function printString that takes a string argument and prints it to the console using the fmt.Println() function. We then declare a variable num of type int and assign it the value 123. We then pass this integer value as an argument to the printString function.

However, when we try to compile and run this program, we will encounter the following error:

Output

./main.go:11:14: cannot use num (type int) as type string in argument to printString

This error occurs because we are trying to pass an integer value to a function that expects a string argument. To fix this error, we need to convert the integer value to a string value using the strconv.Itoa() function, like this:


package main

import (
    "fmt"
    "strconv"
)

func printString(str string) {
    fmt.Println(str)
}

func main() {
    var num int = 123
    printString(strconv.Itoa(num))
}

In this modified program, we use the strconv.Itoa() function to convert the integer value to a string value before passing it as an argument to the printString function. This code will compile and run without any errors.

In summary, the "expected <type>, but got <type>" error in Golang occurs when you pass an argument of the wrong type to a function. To fix this error, you need to convert the argument to the expected type using appropriate type conversion functions or syntax.


Most Helpful This Week