go - 在函数内设置空接口(interface){}类型的变量的值

标签 go

这是我正在努力让它工作的代码。我想设置user func getUser 中的值,它采用 interface{}类型参数。
示例代码:https://play.golang.org/p/Zlhe9VEQhnD

package main

import (
    "fmt"
)

type User struct {
    name string
}

func getUser(result interface{}) {
    result = User{name: "some name"}
    fmt.Println(result)
}

func main() {
    user := User{}
    getUser(&user)
    fmt.Println(user)   
}

它给出了这个结果:
{some name}
{}
我想在函数中所做的更改反射(reflect)在 main
TIA

最佳答案

接口(interface)参数包含一个指向用户结构的指针。您必须使用类型断言获取该指针并将新用户结构复制到目标结构:

func getUser(result interface{}) {
    *result.(*User) = User{name: "some name"}
    fmt.Println(result)
}

关于go - 在函数内设置空接口(interface){}类型的变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63823108/

相关文章:

go - 为什么 Go slice `append()` 不引用?

go - 转换兼容但不同的 map slice

mongodb - 如何使用 dockerfile 创建 MongoDB 数据库并使用该数据库中的数据来运行测试用例

go - 使用 Golang 和 Windows 服务器机器

performance - append 到 slice 糟糕的性能.. 为什么?

go - 如何使用 Scan 接口(interface)将从数据库中读取的字符串小写

go - 在 go 中连接到安全 websocket 时出现问题

go - 如何用golang打印?

multithreading - Golang 中的 channel 和 mutex 有什么区别?

algorithm - 从N个元素的 slice 生成K个元素的算法