По значению. Это означает, что при вызове функции создается копия значения передаваемого аргумента.
Исключение составляют:
В этих случаях передается копия заголовка (header) структуры данных (срезы, карты, каналы) или сам указатель (для указателей). Изменение данных по этому заголовку или указателю внутри функции будет видно снаружи.