[英]In Go why can we use *os.File as a parameter in bufio.NewScanner when the definition suggests, it should only accept io.Reader?
嘗試學習 Go 並一直在使用bufio.NewScanner
來讀取文件的內容。 我使用以下代碼執行此操作:
input_file, err := os.Open("input.txt")
if err != nil {
panic(err)
}
scanner := bufio.NewScanner(input_file)
//do stuff
以為我會查看定義並看到一些奇怪的東西(至少對我來說是這樣),上面的os.Open("input.txt")
實際上返回一個*os.File
並且bufio.NewScanner
期望一個io.Reader
作為參數。 Reader
是一個接口,而File
是一個結構,它不實現接口或類似的東西,如果可能的話。
但看起來這完全沒問題。 我是否缺少有關 go 工作原理的信息? 我有 C# 背景,對我來說參數是不同類型的,所以編譯器不應該允許這樣做,對嗎?
只是好奇,不知道還有什么地方可以問這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.