У Go застосунок організовано в пакети. Пакет - це сукупність вихідних файлів, що лежать в одній теці. Усі вихідні файли в одній теці повинні мати однакову назву пакета на початку файлу. За домовленістю пакети називають так само, як теку, у якій вони лежать.
package greeting
Go надає велику стандартну бібліотеку пакетів, які можна використати у своїй програмі за допомогою ключового слова import.
Пакети зі стандартної бібліотеки імпортують за їхньою назвою.
package greeting
import "fmt"
До імпортованого пакета потім звертаються за назвою пакета:
world := "World"
fmt.Sprintf("Hello %s", world)
Go визначає, чи можна викликати щось із коду в інших пакетах, за тим, як це оголошено. Щоб функція, тип, змінна, константа чи поле структури були видимі ззовні (це називають експортованими), їхня назва має починатися з великої літери.
package greeting
// Hello is a public function (callable from other packages).
func Hello(name string) string {
return "Hello " + name
}
// hello is a private function (not callable from other packages).
func hello(name string) string {
return "Hello " + name
}
Go має вбудований пакет fmt (пакет форматування), який пропонує різноманітні функції для роботи з форматом вхідних і вихідних даних.
Найуживаніша функція - Sprintf. Вона використовує дієслова на кшталт %s, щоб підставляти значення в рядок тексту (англ. string), і повертає цей рядок тексту.
import "fmt"
food := "taco"
fmt.Sprintf("Bring me a %s", food)
// Returns: Bring me a taco
У Go числа з плаваючою комою зручно форматувати за допомогою дієслов Sprintf: %g (компактне подання), %e (експонента) або %f (без експоненти).
Усі три дієслова дають змогу керувати шириною поля та позицією числа.
import "fmt"
number := 4.3242
fmt.Sprintf("%.2f", number)
// Returns: 4.32
Повний список доступних дієслов можна знайти в документації пакета форматування.
fmt містить й інші функції для роботи з рядками тексту, як-от Println, яка просто друкує отримані аргументи в консолі, та Printf, яка форматує вхідні дані так само, як Sprintf, і лише потім їх друкує.
Жив собі ексцентричний програміст у дивному будинку з ґратами на вікнах. Якось він знайшов на онлайн-дошці вакансій замовлення на створення робота для вечірок. Робот має вітати людей і проводжати їх до їхніх місць. Перша версія була дуже технічною і виказувала, що програміст геть не вміє спілкуватися з людьми. Дещо з цього також потрапило в наступну версію.
Реалізуйте функцію Welcome, яка повертає вітальне повідомлення з використанням переданого імені:
Welcome("Christiane")
// => Welcome to my party, Christiane!
Реалізуйте функцію HappyBirthday, яка повертає привітання з днем народження, використовуючи передане імʼя та вік людини.
На жаль, програміст не проти похизуватися, тож робот має продемонструвати, що знає день народження кожного гостя.
HappyBirthday("Frank", 58)
// => Happy birthday Frank! You are now 58 years old!
Реалізуйте функцію AssignTable, яка вказує дорогу.
Вона має приймати 5 параметрів.
string)int)string)string)float64)Точний формат результату можна побачити в прикладі нижче.
Робот подає номер столика у форматі з 3 цифр. Якщо число має менше ніж 3 цифри, до нього додаються провідні нулі, щоб вийшло 3 цифри (наприклад, 3 стає 003). Робот також називає відстань до столика. На щастя, лише з точністю до 1 цифри.
AssignTable("Christiane", 27, "Frank", "on the left", 23.7834298)
// =>
// Welcome to my party, Christiane!
// You have been assigned to table 027. Your table is on the left, exactly 23.8 meters from here.
// You will be sitting next to Frank.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.