сбой отладки dlv из-за неопределенного объекта в том же пакете

#go #delve

#Вперед #углубиться

Вопрос:

Я отправил ошибку для этого на сайт delve. Итак, чтобы объяснить, что происходит. У меня есть 2 файла в одном пакете, main.go и common.go. В main.go он использует некоторую структуру из common.go и когда я запускаю

dlv debug --listen=:2345 --headless --api-version=2 --log main.go

он завершается с ошибкой ‘undefined: NewSimpleStruct’, и я не уверен, что я делаю неправильно.

Вот что содержат файлы Go,

 //main.go
package main

import (
    "fmt"
)

func main() {
    fmt.Println("HELLO WORLD!")
    segasaturn := NewSimpleStruct("SS", 69)
    segasaturn.WhoAmI()

    fmt.Println("BYE WORLD!")
}


//common.go
package main

import "fmt"

type simpleStruct struct {
    name string
    id   int
}

func NewSimpleStruct(name string, id int) *simpleStruct {
    return amp;simpleStruct{name, id}
}

func (ss *simpleStruct) WhoAmI() {
    fmt.Printf("name: %s, id: %dn", ss.name, ss.id)
}
  

Комментарии:

1. распространенная ошибка: вы также не можете go build main.go здесь. Вам нужно выполнить go build . или go build main.go common.go . Аналогично, просто поместите все файлы или точку (.) вместо main.go, чтобы включить все файлы .go в каталог

2. Ах, глупый я … теперь я понимаю. @MuhamedKeta ваш ответ более полный, можете ли вы опубликовать ответ с тем же содержанием?

Ответ №1:

Вы не указали второй исходный файл common.go по имени.

Так что попробуйте:

 dlv debug --listen=:2345 --headless --api-version=2 --log main.go common.go
  

Комментарии:

1. Да, это правда. Спасибо, что нашли время для ответа. Однако ответ @MuhamedKeta более полный

Ответ №2:

Распространенная ошибка, и это не ошибка delve; обратите внимание, что вы также не можете go build main.go здесь.

Вам нужно выполнить go build . или go build main.go common.go .

Аналогично, просто поместите все файлы или точку (.) вместо main.go, чтобы включить все файлы .go в каталог

dlv debug --listen=:2345 --headless --api-version=2 --log .