GO实现未导出功能的接口

问题描述 投票:0回答:1
Project Structure
├── cmd
│   └── main.go
├── go.mod
└── internal
    └── testt

main.go

// main.go

package main

import (
    "fmt"

    "example.com/myproject/internal/testt"
)

// Define a struct abhi
type abhi struct {
    value string
}

// Implement Can_do method for abhi
func (a *abhi) Can_do() {
    fmt.Println("abhi_can_do")
}

// Implement small method for abhi
func (a *abhi) small() {
    fmt.Println("small")
}

func main() {
    var a abhi
    var b testt.Nandu_test
    b = &a
    b.Can_do()
    b.Can_do()
}

testt.go

package testt

type Nandu_test interface {
    Can_do()
    small()
}

查找图像时出错

错误图片

错误:不能使用&a(*abhi类型的值)作为赋值中的testt.Nandu_test值:*abhi没有实现testt.Nandu_test(未导出的方法小)compilerInvalidIfaceAssign

我想知道为什么会发生这种情况,软件包是如何工作的

go package
1个回答
0
投票

规格说明

如果两个标识符的拼写不同,或者它们出现在不同的中且未导出,则它们是不同的。

small
main.abhi
中使用的
testt.Nandu_test
标识符是不同的标识符。 由此可见
main.abhi
没有实现
testt.Nandu_test
接口。

© www.soinside.com 2019 - 2024. All rights reserved.