gpt4 book ai didi

goLang 将结构传递给函数(args 接口(interface){})

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:35 26 4
gpt4 key购买 nike

这是我的代码 http://play.golang.org/p/h0N4t2ZAKQ

package main

import (
"fmt"
"reflect"
)

type Msg struct {
Message string
}

func print(y interface{}) {
z, ok := y.(Msg)
fmt.Println(reflect.TypeOf(z))
fmt.Println("Value of ok ", ok)
if ok {
fmt.Println("Message is "+ z.Message)
}
}

func main() {

foo := new(Msg)
foo.Message="Hello"
fmt.Println("Messege in main "+foo.Message)
print(foo)

}

当我运行它时 z.Message 不打印 Hello不知道为什么。有人可以澄清吗?提前致谢

最佳答案

程序中foo 的类型是*Msg(指向Msg 的指针),而不是Msg。您需要在 print ( http://play.golang.org/p/MTi7QhSVQz ) 中将 y 转换为 *Msg:

z, ok := y.(*Msg)

或者,您可以使用 Msg 类型作为 foo ( http://play.golang.org/p/XMftjVtzBk ):

foo := Msg{Message: "Hello"}

var foo Msg
foo.Message = "Hello"

关于goLang 将结构传递给函数(args 接口(interface){}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34259333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com