登录
首页 >  Golang >  Go问答

使用文件内容填充数据结构

来源:stackoverflow

时间:2024-03-13 17:48:31 426浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《使用文件内容填充数据结构》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我有一个 struct ,其设计如下:

type urldata struct {
    as int 
    iso string 
}

我实例化它,然后读取一个文本文件(见下文),以检查某个结构字段是否等于 txt 文件中的值(是的,我知道显式比较会更容易,但从文件中读取数据是需要满足的要求)

txt 文件的格式如下:

as 646
iso us

读取txt文件时,我想知道*urldata.as字段(在实例化项中)是否等于文件中的值,即646。

问题是我不知道如何将 txt 文件中的当前字段与结构字段的名称相匹配。最合适的方法是什么?


解决方案


您将需要实现一种机制,该机制可以确定行上命名的字段并将其与结构中的相应字段进行匹配。字段识别很简单:在从文件读取的行上使用 strings.split,按空格分割,然后检索第一个值。

在结构中查找它可以采用几种方法。最简单的方法是在条件或类似条件下显式测试它(我避免显示读取文件的代码,因为问题的关键似乎是与结构值的匹配):

// Struct
var myStruct *UrlData = // some instantiation

// Read line from file
line = // TODO

// Determine the field
parts := strings.Split(line, " ")
name, value := parts[0], parts[1]

// Look up the fields in the struct
switch name {
case "as":
        return myStruct.As == value
case "iso":
        return myStruct.Iso == value
}

也可以使用反射从文件中的名称动态查找结构字段,但这会更复杂,应该避免,直到您需要一个真正通用的解决方案(即使这样最好避免 - 反射是代码不清楚!)。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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