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

WBOY
WBOYOriginal
2023-08-21 14:03:461516browse

如何解决golang报错:non-interface type cannot be assigned to interface{ },解决方案

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn