Используешь ли Head при работе с Linux

«Используешь ли Head при работе с Linux» — вопрос из категории Linux, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, Head — это стандартная утилита в Linux для вывода первых строк файла. В Go можно реализовать аналогичную функциональность:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func head(filename string, lines int) error {
    file, err := os.Open(filename)
    if err != nil {
        return err
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    for i := 0; i < lines && scanner.Scan(); i++ {
        fmt.Println(scanner.Text())
    }

    return scanner.Err()
}

func main() {
    err := head("example.txt", 10)
    if err != nil {
        fmt.Println("Error:", err)
    }
}

Ключевые моменты:

  • Используем bufio.Scanner для построчного чтения
  • Ограничиваем вывод указанным количеством строк
  • Обрабатываем возможные ошибки открытия файла и чтения

В отличие от системной утилиты, это решение кроссплатформенно и может быть встроено в Go-приложение.