golang cannot assign to
发布时间:2020-12-16 09:43:08 所属栏目:大数据 来源:网络整理
导读:问题: # command-line-arguments .example.go:22: cannot assign to m.V.(BasicMessage).Length 想在函数中修改interface表示的结构体的成员变量的值,编译时遇到这个编译错误,问题代码如下: package main import ( "fmt" ) type Message struct { V int
问题:
想在函数中修改interface表示的结构体的成员变量的值,编译时遇到这个编译错误,问题代码如下: package main
import (
"fmt"
)
type Message struct {
V interface{}
}
type BasicMessage struct {
Length int
}
func test(m *Message) {
m.V.(BasicMessage).Length = 1
}
func main() {
m := &Message{}
fmt.Println("m:",m)
test(m)
fmt.Println("m:",m)
}
原因:interface不能使用这种赋值方式。 解决办法:将test函数中赋值方式修改为: func test(m *Message) {
bm := BasicMessage{}
bm.Length = 1
m.V = bm
}
output:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |