Импортируйте пакет, содержащий структуру source
в File A
, а затем используйте эту структуру для инициализации переменной, после чего передайте переменную в функцию readFile
.
Файл B
import A
a := A.Source{}
Поскольку структура source
в файле A отличается от структуры source
в файле B. И source
структура файла A реализует интерфейс, поэтому вам необходимо импортировать исходную структуруи затем передайте его в функцию.
Следует заметить, что для экспорта любой структуры или функции вы должны начинать имя структуры или функции с заглавной буквы.
ФайлA
// make struct exportable
type Source struct{
path string
}
реализовал интерфейс, который отличается от
Файл B
type source struct{
path string
}
, который не реализует интерфейс.
Отредактировано
Файл A
package main
import (
"fmt"
"io/ioutil"
"os"
)
type Source struct {
Path string
}
type fileReader interface {
readOneFile() ([]byte, error)
}
func(s Source) readOneFile() ([]byte, error) {
cwd, err := os.Getwd()
file, err := ioutil.ReadFile(fmt.Sprintf("%s/file.txt", cwd))
if err != nil {
return nil, fmt.Errorf("erro reading file : %s", err.Error())
}
return file, err
}
Файл B
package main
import (
"fmt"
)
func main() {
s := Source{}
data, err := s.readOneFile()
if err != nil {
fmt.Errorf("Error in reading the file")
}
fmt.Println(string(data))
}