登录
首页 >  Golang >  Go问答

golang三个结构体怎么对比处理?

来源:SegmentFault

时间:2023-02-24 20:13:12 439浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《golang三个结构体怎么对比处理?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

有三个结构体a,b,c,结构体都相同例如:

type person struct{
    name string
    age uint8
    married bool
    hobbies []string
    education map [string]string
}

a和b之间有些值不同,需要获取到不同的值,经过处理,赋值到c中

这个结构体比较大,一个字段一个字段对比不太现实,我上面就是举个例子

正确答案

可以用反射自动获取结构体的成员名、成员类型、成员值,然后操作它们。

package main

import (
    "fmt"
    "reflect"
)

type Person struct {
    Name      string
    Age       uint8
    Married   bool
    Hobbies   []string
    Education map[string]string
}

func main() {
    a := Person{
        Name:      "John",
        Age:       19,
        Married:   false,
        Hobbies:   []string{"dance", "music"},
        Education: map[string]string{"university": "xx school"},
    }
    b := Person{
        Name:      "Jim",
        Age:       19,
        Married:   false,
        Hobbies:   []string{"singing", "music"},
        Education: map[string]string{"university": "xx school"},
    }
    c := Person{}

    aValue := reflect.ValueOf(a)
    aType := reflect.TypeOf(a)

    bValue := reflect.ValueOf(b)

    cValue := reflect.ValueOf(&c) // 这里要用 c 的引用,因为后面需要给 c 赋值

    for i := 0; i 

代码有点长,重点内容都写了注释了。

今天关于《golang三个结构体怎么对比处理?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表