1 回答

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
source導(dǎo)入包含結(jié)構(gòu)的包File A,然后使用該結(jié)構(gòu)初始化變量,然后將變量傳遞給函數(shù)readFile。
檔案B
import A
a := A.Source{}
因?yàn)槲募?A 中的結(jié)構(gòu)與文件 B 中的結(jié)構(gòu)source不同。文件 A 的結(jié)構(gòu)正在實(shí)現(xiàn)接口,這就是為什么您需要導(dǎo)入源結(jié)構(gòu)然后將其傳遞給函數(shù)的原因。sourcesource
一個(gè)應(yīng)該注意的是,要使任何結(jié)構(gòu)或函數(shù)可導(dǎo)出,您應(yīng)該以大寫字母開頭結(jié)構(gòu)或函數(shù)名稱。
文件A
// make struct exportable
type Source struct{
path string
}
實(shí)現(xiàn)了不同于
檔案B
type source struct{
path string
}
它沒有實(shí)現(xiàn)接口。
已編輯
文件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))
}
- 1 回答
- 0 關(guān)注
- 119 瀏覽
添加回答
舉報(bào)