Комбинация Vscode go не может перейти. «Delete()» может дезактивироваться, а «Create()» — нет. Встречались ли вам какие-нибудь важные кадры? Если у вас есть какие-либо решения, большое спасибо. демо:
import "fmt"
func main() {
a := NewNomal()
a.Create()
a.Delete()
}
func Funnn(a map[int]bool) {
a[2] = false
}
type Nomal interface {
Delete()
Create()
}
func NewNomal() Nomal {
return &Person{}
}
type Person struct {
*Per
}
type Per struct {
}
func (p *Person) Delete() {
fmt.Println("delete person")
}
func (p *Per) Create() {
fmt.Println("create per")
}
Создать и удалить прыжок
«прыжок» означает команду + стрелка влево.
Когда я выбираю Delete
в интерфейсе Nomal
, я могу выбрать «Перейти к реализациям» и перейти к func (p *Person) Delete()
, потому что *Person
реализует интерфейс Nomal
и, следовательно, эта функция является реализацией этого метода.
С другой стороны, *Per
не реализует интерфейс Nomal
, поэтому func (p *Per) Create()
не является реализацией метода Create()
.
Метод Create
встроенного поля *Per
в структуре Person
повышается до Person.Create
, поэтому Person
реализует Nomal
без реализации для самого Create
.
Именно по этой причине вы не можете перейти к реализации: ее нет, и в VS Code нет команды «перейти к расширенным реализациям», о которой я знаю.
Большое спасибо за ваш ответ. Если нет, то было бы жаль. Вы можете найти его на Голанде.
Вы можете перейти к реализации в Golang, но не от реализации к спецификации метода для Create
. Так что это похоже. Пожалуйста, отметьте ответ как принятый или полезный, если он был полезен. Спасибо.
Что вы подразумеваете под словом «прыгнуть»?