私は関数を実行し、変数に出力結果を返したいが、これは私の実際のコードです:同じ結果で文字列または `error`値を返すことはできますか?
package main
import (
"os"
"net/http"
"io"
"fmt"
"strings"
)
func downloadFile(url string) (err error) {
resp, err := http.Get(url)
if err != nil {
return err
}
// extrage numele fisierului din linkul redirectionat.
finalURL := resp.Request.URL.String()
parts := strings.Split(finalURL, "/")
filename := parts[len(parts)-1]
out, errr := os.Create(filename)
if errr != nil {
return errr
}
_, err = io.Copy(out, resp.Body)
if err != nil {
return err
}
defer out.Close()
defer resp.Body.Close()
return filename
}
func main() {
var url1 string = "https://transfer.sh/5e2iH/test.txt"
var filename2 string = "test test test"
filename2 := downloadFile(url1)
fmt.Println(filename2)
}
私は、関数downloadFileを実行し、変数FILENAME2で変数名を返す、私はイム間違ってこのエラーを返したいですか?イムPythonの開発者、愚かなエラーを作成してくださいイム:)
F:\dev\GoLang\gitlab\check>go run download.go
# command-line-arguments
.\download.go:37:3: cannot use filename (type string) as type error in return ar
gument:
string does not implement error (missing Error method)
.\download.go:45:13: no new variables on left side of :=
.\download.go:45:13: cannot use downloadFile(url1) (type error) as type string i
n assignment
それだけで 'ERROR'を期待しているときは、文字列を返しています。あなたの関数は 'func downloadFile(URL文字列)(文字列、エラー)'でなければならず、 'return err'は' return ""、err'でなければならず、最終リターンは 'return nil、filename'です。 – RayfenWindspear