下面是我的代码:
步骤1:模型文件夹
type EmployeeWithRoot struct {
Employee []Employee
}
type Employee struct {
EmpNbr sql.NullString `json:"EmpNbr"`
DateofJoin sql.NullString `json:"DateofJoin"`
DeptId sql.NullString `json:"DeptId"`
DeptName sql.NullString `json:"DeptName"`
}
步骤2:代码文件夹
func GetEmpDetails(logRequestId string, logNestedLevel int, EmpNbr string, DateofJoin string) ([]model.EmployeeWithRoot, error) {
logFunctionFunctionName := "code.GetEmpDetails"
logStartTime := time.Now()
logNestedLevel++
defer configurations.TimeTrack(logFunctionFunctionName, logRequestId, logStartTime, logNestedLevel)
rows, err := db.Query(utils.SELECT_OF_EMP_AGGR, EmpNbr, DateofJoin, DeptId, DeptName)
if err != nil {
return nil, err
}
defer rows.Close()
var e []model.EmployeeWithRoot
for rows.Next() {
var x model.EmployeeWithRoot
err := rows.Scan(&x.Employee.EmpNbr, &x.Employee.DateofJoin, &x.Employee.DeptId,&x.Employee.DeptName)
if err != nil {
return nil, err
}
e = append(e, x)
}
err = rows.Err()
if err != nil {
return nil, err
}
return e, nil
}
第3步:API文件夹
Employee, err := code.GetEmpDetails(logRequestId, logNestedLevel, EmpNbr, DateofJoin)
if err != nil {
log.Panic(err)
}
marshalDataForRequestContentType(logRequestId, logNestedLevel, w, r, Employee)
我是新来的郎和得到下面的错误。有谁能帮我看一下我缺了哪行代码吗?
x。受雇者EmpNbr未定义(类型[]model.Eemployee没有字段或方法EmpNbr(x.Employee.DateofJoin未定义(类型[]model.Emplloyee没有字段或方法DateofJoin(x.Employee.DeptId未定义(类型[]model.Eemployee没有字段或方法DeptId(x.Employee.DeptName未定义(类型[]model.Eemployee没有字段或方法DeptName(
您的问题在这里:
var x model.EmployeeWithRoot
err := rows.Scan(&x.Employee.EmpNbr, &x.Employee.DateofJoin, &x.Employee.DeptId,&x.Employee.DeptName)
x.Employee
是一个切片:在模型中定义为[]Employee
。
您正试图在切片上调用.EmpNbr
,所以这显然不起作用。
这将起作用:
var x model.Employee
err := rows.Scan(&x.EmpNbr, &x.DateofJoin, &x.DeptId,&x.DeptName)