Функция ExampleXxx

Функция ExampleXxx является специальной функцией в пакете testing, которая позволяет создавать исполняемые примеры для документации. Она не вызывается напрямую, а используется как часть системы тестирования Go. Примеры помогают разработчикам понять, как использовать функции пакета, и одновременно служат проверкой работоспособности кода.

Синтаксис

gofunc ExampleXxx() {
  // код примера
}

Где Xxx - это имя функции, которую демонстрирует пример. Например, для демонстрации функции PrintHello нужно создать функцию ExamplePrintHello.

Пример

Давайте создадим пример для функции сложения двух чисел:

gopackage main

import "fmt"

func Add(a, b int) int {
  return a + b
}

func ExampleAdd() {
  res := Add(5, 3)
  fmt.Println(res)
  // Output: 8
}

Результат выполнения кода:

go"8"

Обратите внимание на комментарий // Output: 8 - он указывает ожидаемый результат и используется для автоматической проверки примера.

Пример

Пример для функции, которая объединяет слайс строк:

gopackage main

import "fmt"

func JoinStrings(s []string, sep string) string {
  res := ""
  for i, str := range s {
    if i > 0 {
      res += sep
    }
    res += str
  }
  return res
}

func ExampleJoinStrings() {
  res := JoinStrings([]string{"a", "b", "c", "d", "e"}, "-")
  fmt.Println(res)
  // Output: a-b-c-d-e
}

Результат выполнения кода:

go"a-b-c-d-e"

В этом примере функция JoinStrings объединяет элементы слайса с указанным разделителем, а затем выводит результат.

Пример

Пример с несколькими выводами для демонстрации работы функции:

gopackage main

import "fmt"

func Calculate(num int) (int, int) {
  return num * 2, num * 3
}

func ExampleCalculate() {
  double, triple := Calculate(4)
  fmt.Println("Double:", double)
  fmt.Println("Triple:", triple)
  // Output:
  // Double: 8
  // Triple: 12
}

Результат выполнения кода:

go"Double: 8"
"Triple: 12"

Если пример выводит несколько строк, все они должны быть указаны в блоке // Output в правильном порядке.

Смотрите также

  • функцию testing.T.Run,
    которая запускает подтесты внутри основного теста
  • функцию testing.B.Run,
    которая запускает подбенчмарки внутри основного бенчмарка
  • функцию testing.T.Log,
    которая выводит логи во время выполнения теста
  • функцию testmain,
    которая используется для настройки тестового окружения