PHP 편집기 Youzi는 변수 참조 전달, 즉 WalkDirFunc에 변수 참조 전달에 대한 중요한 개념을 소개합니다. PHP에서 변수 참조 전달은 변수에 대한 참조를 함수나 메서드에 전달하여 함수 내의 변수를 수정할 수 있는 전송 방법입니다. 이러한 방식으로 함수 내부에 변수의 새로운 복사본이 생성되는 것을 방지하고 코드의 실행 효율성을 향상시킬 수 있습니다. WalkDirFunc는 지정된 디렉터리의 모든 파일을 탐색하고 해당 파일에서 작업할 수 있는 샘플 함수입니다. WalkDirFunc에 변수 참조를 전달하면 수정된 결과를 반환하지 않고 함수 내부에서 전달된 변수에 대해 직접 작업할 수 있습니다. 이 접근 방식은 대용량 데이터를 처리하고, 메모리 오버헤드를 줄이고, 코드 가독성과 유지 관리성을 향상시킬 때 특히 유용합니다.
주어진 디렉토리를 재귀적으로 반복하고 찾은 파일의 이름과 크기를 map[string]uint32
에 저장하려고 합니다. path/filepath/walkdir 함수와 walkdirfunc를 사용하여 지정된 디렉터리를 재귀적으로 탐색하는 방법을 설명하는 기사를 찾았습니다.
저는 비교적 처음이고 지도에 대한 참조를 walkdirfunc
에 전달할 방법을 찾을 수 없습니다. 지도의 서명이 세 가지 인수만 지정하기 때문입니다.
편집: walk
는 filepath.walkdir
walk
是传递给filepath.walkdir
的walkdirfunc
로 전달되므로 여기서부터 지도를 전달해야 합니다. Python에서는 이 작업을 수행하기 위해 명명된 매개 변수를 사용하지만 가장 좋은 방법은 무엇입니까?
func main() { args := os.args if len(args) != 2 { msg := fmt.sprintf("usage: %v <path_to_directory>", args[0]) log.fatal(msg) } fullpath := args[1] dirmap := make(map[string]uint32) filepath.walkdir(fullpath, walk) } // how to create parameter accepting &map[string]uint32 func walk(path string, entry fs.direntry, err error) error { if err != nil { return err } if !entry.isdir() { // add entry and it's size to dirmap file, err := os.stat(path) if err != nil { log.println("error determining file size:", err) } size := file.size() // add path and size to dirmap } else if entry.isdir() { // recurse here } else { log.println("unhandled branch:") log.println(entry.info()) } return nil }
은 클로저를 사용합니다. 걷기를 다음으로 변경:
으아악walkdir을 다음과 같이 호출하세요:
으아악여기에서 예제를 실행하세요: https://www.php.cn/link/178fde6398864e33aaefae5d2d855f20
위 내용은 WalkDirFunc에 변수 참조 전달의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!