Golang中解决[]employee类型未定义name字段或方法的问题
Golang中解决[]employee类型未定义name字段或方法的问题
下面的变量声明示例没有继承结构体的字段或方法。
如何重新表述,以便在保留 append 的同时访问结构体内部的字段?下面是一个示例。
提前感谢。
package main
import "fmt"
type employee struct {
name string
last string
}
func main() {
emp := []employee{}
emp = append(emp, employee{name: "Sam", last: "Fish"})
fmt.Printf("name is: %s\n", emp.name)
}
emp.name 未定义(类型 []employee 没有字段或方法 name)
更多关于Golang中解决[]employee类型未定义name字段或方法的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
3 回复
哦。谢谢。
更多关于Golang中解决[]employee类型未定义name字段或方法的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
emp 是一个切片而非结构体,因此需要通过索引来访问其中的信息。所以,将 emp.name 改为 emp[0].name。
这是一个常见的切片操作问题。emp 是 []employee 类型(切片),而不是单个 employee 结构体。要访问结构体字段,你需要指定切片中的具体元素索引。
以下是修正后的代码:
package main
import "fmt"
type employee struct {
name string
last string
}
func main() {
emp := []employee{}
emp = append(emp, employee{name: "Sam", last: "Fish"})
// 访问第一个元素的name字段
fmt.Printf("name is: %s\n", emp[0].name)
// 或者遍历所有元素
for i, e := range emp {
fmt.Printf("Employee %d: %s %s\n", i, e.name, e.last)
}
}
如果你需要访问所有元素的name字段,可以使用循环:
// 只打印所有员工的name
for _, e := range emp {
fmt.Printf("name is: %s\n", e.name)
}
或者如果你只需要第一个元素的name:
if len(emp) > 0 {
fmt.Printf("First employee name: %s\n", emp[0].name)
}
关键点是:emp 是切片,emp[0] 或 emp[i] 才是具体的 employee 结构体实例,只有结构体实例才有 name 字段。

