有三个结构体a,b,c,结构体都相同例如:
type person struct{
name string
age uint8
married bool
hobbies []string
education map [string]string
}
a和b之间有些值不同,需要获取到不同的值,经过处理,赋值到c中
这个结构体比较大,一个字段一个字段对比不太现实,我上面就是举个例子
有三个结构体a,b,c,结构体都相同例如:
type person struct{
name string
age uint8
married bool
hobbies []string
education map [string]string
}
a和b之间有些值不同,需要获取到不同的值,经过处理,赋值到c中
这个结构体比较大,一个字段一个字段对比不太现实,我上面就是举个例子
不太清楚题主怎么处理值 我按自己的理解简单写了一下
type person struct {
name string
age uint8
married bool
hobbies []string
education map[string]string
}
func CheckStruct(A person, B person) person {
c := &person{}
if A.married && B.married {
c.name = A.name
c.age = A.age
c.married = A.married
c.hobbies = A.hobbies
c.education = A.education
}
if A.married || B.married {
c.name = B.name
c.age = B.age
c.married = B.married
c.hobbies = B.hobbies
c.education = B.education
}
return *c
}
func main() {
a := person{
name: "peter",
age: 18,
married: true,
hobbies: nil,
education: nil,
}
b := person{
name: "zhu",
age: 19,
married: false,
hobbies: nil,
education: nil,
}
fmt.Println(CheckStruct(a, b)) // {zhu 19 false [] map[]}
}
7 回答5.4k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答4.5k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
4 回答4.1k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
可以用反射自动获取结构体的成员名、成员类型、成员值,然后操作它们。
代码有点长,重点内容都写了注释了。