Home > Article > Backend Development > How to solve golang error: non-interface type cannot be assigned to interface{}, solution
How to solve golang error: non-interface type cannot be assigned to interface{ }, solution
In the process of writing code in Golang, we sometimes encounter A common error message: non-interface type cannot be assigned to interface{ }. This error message may appear when the program attempts to assign a non-interface type to the interface{} type. So, how do we solve this problem? The solution is detailed below, with code examples.
First of all, we need to understand the concepts of interfaces and interface{} types in Golang. In Golang, an interface is a collection of one or more method signatures. The interface{} type represents an empty interface, that is, it can accept values of any type. Since the interface{} type can accept values of any type, type assertion is required when assigning values.
The following is a simple code example that shows the error non-interface type cannot be assigned to interface{ } when assigning and the corresponding solution:
package main import ( "fmt" ) type Animal interface { Say() string } type Cat struct { Name string } func (c Cat) Say() string { return "Meow" } func main() { cat := Cat{Name: "Tom"} // 错误示例:尝试将非接口类型赋值给interface{}类型 var animal interface{} animal = cat // 报错:non-interface type cannot be assigned to interface{} fmt.Println(animal) // 正确示例:使用类型断言将非接口类型赋值给interface{}类型 animal = cat.(Animal) fmt.Println(animal.Say()) }
In the above example , we define an Animal interface and a Cat structure, and the Cat structure implements the Say method. In the main function, we create a Cat object and try to assign it to a variable of type interface{}. In the error example, we directly assign cat to animal, and an error message non-interface type cannot be assigned to interface{} will appear.
In order to solve this problem, we need to use type assertions to assign non-interface types to interface{} types. In the correct example, we use cat.(Animal) to convert cat to the Animal interface type and assign it to the animal variable. In this way, the non-interface type can be successfully assigned to the interface{} type.
To summarize, when the error non-interface type cannot be assigned to interface{} occurs in Golang, we need to use type assertions to convert the non-interface type to the interface type and then assign it. This way we can resolve the issue and continue programming and development as normal. I hope the solutions in this article can help you.
The above is the detailed content of How to solve golang error: non-interface type cannot be assigned to interface{}, solution. For more information, please follow other related articles on the PHP Chinese website!