2017-05-03 3 views
1

과 일치하지 않습니다. 시험용으로 os.FileInfo을 모의했습니다.os.FileInfo mock이 내 골란 프로젝트 중 하나에서

golang의 인터페이스 처리를 제대로 이해하고 있는지 잘 모르겠습니다. 내가 아는 한 다음 코드 조각이 작동해야하지만, 인터페이스가 일치하지 않는다고 말하는 Compilererror가 발생합니다.

직접 수정하려는 경우에 대비하여 this go-doc 예제를 약간 수정했습니다. golang의 의사에 따라

package main 

import (
    "fmt" 
    "io/ioutil" 
    "log" 
) 

type file interface{ 
    Name() string 
} 

func readFiles() []file{ 
    files, err := ioutil.ReadDir(".") 

    if err != nil { 
     log.Fatal(err) 
    } 

    return files 
} 

func main() { 
    files := readFiles() 

    for _, file := range files { 
     fmt.Println(file.Name()) 
    } 
} 

ioutil.ReadDir(".") 내 selfwritten file 인터페이스의 전문화해야 os.FileInfo의 조각을 반환해야합니다.

누구나 오해와 얽힘을 도울 수 있습니까?

대단히 감사합니다!

+1

https://golang.org/doc/faq#convert_slice_of_interface에서 이야기하는 내용입니다. 문제는 슬라이스가 아니라 인터페이스입니다. – Volker

+1

http://stackoverflow.com/a/12754757/859353 – jcbwlkr

답변

0

os.FileInfo은 인터페이스이며 file으로 변환 할 수 있습니다. 하지만 []os.FileInfo[]file으로 변환하려고합니다. 슬라이스는 인터페이스가 아니며 어설 션 될 수 없습니다.