亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用來自不同文件的golang中的接口方法

使用來自不同文件的golang中的接口方法

Go
守著一只汪 2023-04-17 16:01:37
我method想提供一些接口以使其更容易測試這是功能文件Afunc readFile(s source) ([]byte, error) {        p := fs.GetPath()        file, err := ioutil.ReadFile(p + "/" + s.path + "/" + "rts.yaml")        if err != nil {            return yamlFile, fmt.Errorf("erro reading file : %s", err.Error())        }        return file, err    }現在我為它添加結構type source struct{    path string}界面readFile是implementingtype fileReader interface {    readFile(path string) ([]byte, error)}現在我需要從另一個文件調用這個函數但是我在執行此操作時遇到錯誤檔案Btype source struct {    path string}a := source{}yamlFile, err := readFile(a)我在這里錯過了什么?
查看完整描述

1 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

source導入包含結構的包File A,然后使用該結構初始化變量,然后將變量傳遞給函數readFile。


檔案B


import A

a := A.Source{}

因為文件 A 中的結構與文件 B 中的結構source不同。文件 A 的結構正在實現接口,這就是為什么您需要導入源結構然后將其傳遞給函數的原因。sourcesource


一個應該注意的是,要使任何結構或函數可導出,您應該以大寫字母開頭結構或函數名稱。


文件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))

}


查看完整回答
反對 回復 2023-04-17
  • 1 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號