{"record":{"id":"12ad4f6b5502b101","repo":"go-delve/delve","slug":"s-has-no-member-s-12ad4f","errorCode":null,"errorMessage":"%s has no member %s","messagePattern":"(.+?) has no member (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/proc/variables.go","lineNumber":1155,"sourceCode":"}\n\n// structField returns the field named memberName in v.\n// This function is meant for internal use, it does not support interfaces, embeds or member methods. For those cases findStructMemberOrMethod should be used instead.\nfunc (v *Variable) structField(memberName string) (*Variable, error) {\n\tif v.Unreadable != nil {\n\t\treturn v.clone(), nil\n\t}\n\tvname := v.Name\n\tif v.Name == \"\" {\n\t\tvname = v.DwarfType.String()\n\t}\n\tif v.loaded && (v.Flags&VariableFakeAddress) != 0 {\n\t\tfor i := range v.Children {\n\t\t\tif v.Children[i].Name == memberName {\n\t\t\t\treturn &v.Children[i], nil\n\t\t\t}\n\t\t}\n\t\treturn nil, fmt.Errorf(\"%s has no member %s\", vname, memberName)\n\t}\n\tclosure := false\n\tswitch v.Kind {\n\tcase reflect.Chan:\n\t\tv = v.clone()\n\t\tv.RealType = godwarf.ResolveTypedef(&(v.RealType.(*godwarf.ChanType).TypedefType))\n\tcase reflect.Func:\n\t\tfn := v.bi.PCToFunc(v.Base)\n\t\tv.loadFunctionPtr(0, LoadConfig{MaxVariableRecurse: -1})\n\t\tif v.Unreadable != nil {\n\t\t\tcst := fn.extra(v.bi).closureStructType\n\t\t\tif cst == nil || cst.ByteSize == 0 {\n\t\t\t\t// Not a closure, normal function\n\t\t\t\tif _, ok := v.bi.PackageMap[vname]; ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"package %s has no function %s\", vname, memberName)\n\t\t\t\t}\n\t\t\t\treturn nil, fmt.Errorf(\"%s has no member %s\", vname, memberName)\n\t\t\t}","sourceCodeStart":1137,"sourceCodeEnd":1173,"githubUrl":"https://github.com/go-delve/delve/blob/a23773e6c31361e43246bc43a424ee009679b174/pkg/proc/variables.go#L1137-L1173","documentation":"memberVariable lookups for fake-address variables (loaded synthetic variables such as map/chan internals) walk preloaded children by name. When no child matches memberName, this error states the parent has no such member. The name was misspelled or the parent does not structurally contain it.","triggerScenarios":"Evaluating expr like 'mapVar.key' or 'chanVar.buffer' where vname's variable was loaded with VariableFakeAddress and none of its children match the requested member name.","commonSituations":"Typo in a field name; accessing runtime-internal fields whose names changed between Go versions (e.g. hmap bucket fields); assuming a synthetic variable has members it does not.","solutions":["Print the parent variable alone (eval vname) and inspect its actual member names.","Correct the member name spelling/casing.","Check the expected field names against your Go runtime version — internals change; upgrade Delve for current layouts.","Use the locals/vars commands to discover valid names instead of guessing."],"exampleFix":"// before\ndlv> eval m.count\nCommand failed: m has no member count\n\n// after: inspect then use a real member\ndlv> eval m          // view children\ndlv> eval m.count._  // or the correct runtime field","handlingStrategy":"validation","validationCode":"parent, err := client.EvalVariable(scope, vname, cfg)\nif err != nil { return err }\nfor _, c := range parent.Children {\n    if c.Name == memberName { return nil } // safe to evaluate vname.memberName\n}\nreturn fmt.Errorf(\"%s has no member %s\", vname, memberName)","typeGuard":null,"tryCatchPattern":"v, err := client.EvalVariable(scope, vname+\".\"+memberName, cfg)\nif err != nil && strings.Contains(err.Error(), \"has no member\") {\n    // inspect parent children and pick a valid member name\n}","preventionTips":["Always print the parent variable first to discover real member names","Remember runtime-internal field names vary across Go versions","Use tab-completion/locals in the terminal instead of guessing names"],"tags":["go","debugger","variables","evaluation"],"backgroundTag":"no-such-member","analyzedSha":"a23773e6c31361e43246bc43a424ee009679b174","analyzedAt":"2026-08-31T15:12:45.221Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}