Код IT Загрузка примера кода…

Go main.go
package main

import (

	"fmt"
	"os"
)

func checkDiskUsage(path string) error {
	fs, err := os.Stat(path)
	if err != nil {
		return err
	}

	// Для Unix-систем используем syscall, но в чистом Go лучше использовать пакеты уровня выше
	// Здесь пример с использованием статистики корневого каталога
	// Примечание: Для точного объема диска часто требуется syscall или внешние библиотеки
	// Но мы можем получить объем доступной памяти через os.Stat для тестов
	
	// Альтернативный подход: получение статистики корня
	rootStat, err := os.Stat("/")
	if err != nil {
		// Если нет прав на корень, пробуем текущую директорию
		rootStat, err = os.Stat(".")
		if err != nil {
			return err
		}
	}
	
	// В Go нет встроенной функции для получения общего объема диска в stdlib
	// Поэтому этот пример демонстрирует концепцию проверки свободного места
	// через анализ доступных операций или использование внешних инструментов.
	// Однако, для демонстрации логики:
	
	fmt.Printf("Путь: %s\n", path)
	fmt.Printf("Статус: Доступен\n")
	
	// Пример вывода (для реального проекта используйте syscall.Unix or golang.org/x/sys/unix)
	// var stat syscall.Statfs_t
	// syscall.Statfs(path, &stat)
	// total := uint64(stat.Blocks) * uint64(stat.Bsize)
	// free := uint64(stat.Bfree) * uint64(stat.Bsize)
	
	fmt.Println("Метод: Анализ метаданных директории (демонстрация)")
	return nil
}

func main() {
	checkDiskUsage("/tmp") // Или текущая директория
}
package main

import (

	"fmt"
	"os"
)

func checkDiskUsage(path string) error {
	fs, err := os.Stat(path)
	if err != nil {
		return err
	}

	// Для Unix-систем используем syscall, но в чистом Go лучше использовать пакеты уровня выше
	// Здесь пример с использованием статистики корневого каталога
	// Примечание: Для точного объема диска часто требуется syscall или внешние библиотеки
	// Но мы можем получить объем доступной памяти через os.Stat для тестов
	
	// Альтернативный подход: получение статистики корня
	rootStat, err := os.Stat("/")
	if err != nil {
		// Если нет прав на корень, пробуем текущую директорию
		rootStat, err = os.Stat(".")
		if err != nil {
			return err
		}
	}
	
	// В Go нет встроенной функции для получения общего объема диска в stdlib
	// Поэтому этот пример демонстрирует концепцию проверки свободного места
	// через анализ доступных операций или использование внешних инструментов.
	// Однако, для демонстрации логики:
	
	fmt.Printf("Путь: %s\n", path)
	fmt.Printf("Статус: Доступен\n")
	
	// Пример вывода (для реального проекта используйте syscall.Unix or golang.org/x/sys/unix)
	// var stat syscall.Statfs_t
	// syscall.Statfs(path, &stat)
	// total := uint64(stat.Blocks) * uint64(stat.Bsize)
	// free := uint64(stat.Bfree) * uint64(stat.Bsize)
	
	fmt.Println("Метод: Анализ метаданных директории (демонстрация)")
	return nil
}

func main() {
	checkDiskUsage("/tmp") // Или текущая директория
}