猿问

从数组创建结构

我有一个看起来像这样:Employee struct


type Employee struct {

  firstName string

  lastName  string

  role      string

}

我从Excel文件中读取了一行,该行具有相同顺序的相应列。从excel文件中,我创建了一个保存此数据的数组,因此该数组如下所示:


[personFirstName, personLastName, personRole]


我想用它来初始化我的员工结构。但是我不知道该怎么做,因为我不能像迭代数组一样迭代 Employee 结构。我想过手动完成它,就像这样:


e := {

  firstName: array[0],

  lastName: array[1],

  role: array[2],

}

但我想应该有更好的方法。有什么想法吗?


慕工程0101907
浏览 121回答 1
1回答

泛舟湖上清波郎朗

问题中的代码没有错。下面介绍如何使用反射 API 来实现目标:导出字段以使字段可通过反射 API 进行设置。type Employee struct {&nbsp; &nbsp; FirstName string&nbsp; &nbsp; LastName&nbsp; string&nbsp; &nbsp; Role&nbsp; &nbsp; &nbsp; string}为员工创造反映价值。和 恶作剧是获取可设置值所必需的。&Elem()var e Employeev := reflect.ValueOf(&e).Elem()对于每个字段,设置字符串:for i := 0; i < v.NumField(); i++ {&nbsp; &nbsp; v.Field(i).SetString(values[i])}在 Go 游乐场上运行一个示例。如果需要将代码放在多个位置,请将代码放在函数中:// setStrings sets the fields of the struct pointed&nbsp;// to by ptr to the specified values.func setStrings(ptr interface{}, values []string) {&nbsp; &nbsp; v := reflect.ValueOf(ptr).Elem()&nbsp; &nbsp; for i := 0; i < v.NumField(); i++ {&nbsp; &nbsp; &nbsp; &nbsp; v.Field(i).SetString(values[i])&nbsp; &nbsp; }}这样称呼它:values := []string{"Monica", "Smith", "Manager"}var e EmployeesetStrings(&e, values)fmt.Printf("%+v\n", e) // prints {FirstName:Monica LastName:Smith Role:Manager}&nbsp;在操场上运行一个示例。
随时随地看视频慕课网APP

相关分类

Go
我要回答