diff options
| author | AstiaSun <anastasiia.bondarenko@ring.com> | 2019-11-01 11:39:36 +0200 | 
|---|---|---|
| committer | AstiaSun <anastasiia.bondarenko@ring.com> | 2019-11-06 22:30:12 +0200 | 
| commit | 69ef8d3f3a7df9d116b9df937569fb6d00db96e8 (patch) | |
| tree | f88fddec9d7f9f43a8e652011bd91831aa35df4b | |
| parent | d7af01bda2a7c5cad433502de6780a1ccc05b8aa (diff) | |
Fix discovered misspelling
| -rw-r--r-- | uk-ua/go-ua.html.markdown | 99 | 
1 files changed, 49 insertions, 50 deletions
| diff --git a/uk-ua/go-ua.html.markdown b/uk-ua/go-ua.html.markdown index 8c9e9de7..933b34f9 100644 --- a/uk-ua/go-ua.html.markdown +++ b/uk-ua/go-ua.html.markdown @@ -21,7 +21,7 @@ Go був створений для того, щоб виконати задач  Він увібрав принципи з імперативних мов зі статичною типізацією.  Go швидко компілюється та виконується, а його багатопоточність легка для -вивчення, оскільки багатоядерні CPU стали буденністю. Ця мова програмування успішно використовується у кодах великих продуктів (~100 міліонів в Google, Inc.) +вивчення, оскільки багатоядерні CPU стали буденністю. Ця мова програмування успішно використовується у кодах великих продуктів (~100 мільйонів в Google, Inc.)  Go має чудову стандартну бібліотеку та чимале ком'юніті. @@ -30,11 +30,11 @@ Go має чудову стандартну бібліотеку та чимал  /* Багато-   рядковий коментар */ -// Кожен файл вихідного коду має почитанитсь із ключового слова package. +// Кожен файл вихідного коду має починатись із ключового слова package.  // main - це спеціальна назва, що оголошує виконуваний код, а не бібліотеку.  package main -// import оголошує бібліотеки, що використовуються в данному файлі. +// import оголошує бібліотеки, що використовуються в даному файлі.  import (  	"fmt"       // Пакет стандартної бібліотеки Go.  	"io/ioutil" // Цей пакет реалізує деякі I/O функції утиліт. @@ -56,8 +56,8 @@ func main() {  	beyondHello()  } -// Аргумети функцій описуються у круглих дужках. -// Навіть якщо ніякі аргументи не передаються, пусті круглі дужки - обовязкові. +// Аргументи функцій описуються у круглих дужках. +// Навіть якщо ніякі аргументи не передаються, пусті круглі дужки - обов`язкові.  func beyondHello() {  	var x int // Оголошення змінної. Перед використанням змінні обов'язково мають бути оголошені.  	x = 3     // Присвоєння значення. @@ -70,7 +70,7 @@ func beyondHello() {  /* <- багаторядковий коментар  Функції можуть мати параметри та повертати довільну кількість значень. -В цьому прикладі `x`, `y` - це аргументи, а `sum`, `prod` - це змінні, що повертається. +В цьому прикладі `x`, `y` - це аргументи, а `sum`, `prod` - це змінні, що повертаються.  Зверніть увагу, що `x` та `sum` мають тип `int`.  */  func learnMultiple(x, y int) (sum, prod int) { @@ -83,19 +83,19 @@ func learnTypes() {  	str := "Вчи Go!" // рядок (string).  	s2 := `"Необроблений" текст -може містити переноси рядків.` // Те й же рядок. +може містити переноси рядків.` // Також має тип рядок.  	// Не ASCII символи. Go використовує UTF-8.  	g := 'Σ' // руничний тип, псевдонім для int32, містить позицію юнікод кода. -	f := 3.14195 // float64, IEEE-754 64-бітне число з плавуючою крапкою. -	c := 3 + 4i  // complex128, комплекстні числа, що уявляють собою два float64. +	f := 3.14195 // float64, IEEE-754 64-бітне число з плаваючою крапкою. +	c := 3 + 4i  // complex128, комплексні числа, що являють собою два float64. -	// Синтакс ініціалізації з var. +	// Синтаксис ініціалізації з var.  	var u uint = 7 // Беззнаковий цілочисельний тип, проте розмір залежить від імплементації, так само як і int.  	var pi float32 = 22. / 7 -	// Синтакс перетворення типів з коротним оголошенням. +	// Синтаксис перетворення типів з коротким оголошенням.  	n := byte('\n') // Байт - це переіменований uint8.  	// Розмір масива фіксований протягом часу виконання. @@ -104,7 +104,7 @@ func learnTypes() {  	// п'ять елементів, що мають значення 3, 1, 5, 10, та 100.  	// Зрізи мають динамічний розмір. Переваги є і у масивів, й у зрізів, проте -	// останні викоритовуються частіше. +	// останні використовуються частіше.  	s3 := []int{4, 5, 9}    // Порівняйте з a5. Тут немає трьокрапки.  	s4 := make([]int, 4)    // Виділяє пам'ять для зрізу з 4 чисел, проініціалізованих 0.  	var d2 [][]float64      // Декларація, нічого не виділяється. @@ -113,27 +113,27 @@ func learnTypes() {  	// Оскільки зрізи динамічні, до них можна додавати елементи за необхідністю.  	// Для цієї операції використовується вбудована функція append().  	// Перший аргумент - це зріз, до якого додається елемент. Зазвичай  -	// змінна масиву оновлюється на місці, як у прикладі нище. +	// змінна масиву оновлюється на місці, як у прикладі нижче.  	s := []int{1, 2, 3}		// В результаті отримуємо зріз із 3 чисел.  	s = append(s, 4, 5, 6)	// додаємо 3 елементи. Зріз тепер довжини 6.  	fmt.Println(s) // Оновлений зріз тепер має значення [1 2 3 4 5 6]  	// Щоб об'єднати два зрізи, замість того, щоб проходитись по всім елементам, -	// можна передати посилання на зріз із трьокрамкою, як у прикладі нище. Таким чином, +	// можна передати посилання на зріз із трьокрапкою, як у прикладі нижче. Таким чином,  	// зріз розпакується і його елементи додадуться до зріза s.  	s = append(s, []int{7, 8, 9}...)  	fmt.Println(s)	// Оновлений зріз тепер дорівнює [1 2 3 4 5 6 7 8 9]  	p, q := learnMemory() // Оголошує змінні p, q, що є вказівниками на числа. -	fmt.Println(*p, *q)   // * іде попереду вказівника. Таким чином, видодяться числа. +	fmt.Println(*p, *q)   // * іде попереду вказівника. Таким чином, виводяться числа. -	// Асоціативний масив (map) - це динамічно розширюваний тип данних, як хеш +	// Асоціативний масив (map) - це динамічно розширюваний тип даних, як хеш  	// або словник в інших мовах програмування  	m := map[string]int{"three": 3, "four": 4}  	m["one"] = 1  	// В Go  змінні, які не використовуються, вважаються помилкою. -	// Нижнє підкреслювання дозволяє "використати" змінну, але проігноруванти значення. +	// Нижнє підкреслення дозволяє "використати" змінну, але проігнорувати значення.  	_, _, _, _, _, _, _, _, _, _ = str, s2, g, f, u, pi, n, a5, s4, bs  	// Зазвичай це використовується, щоб проігнорувати значення, що повертає функція.  	// Наприклад, в скрипті нашвидкоруч можна проігнорувати помилку, яку повертає @@ -148,21 +148,21 @@ func learnTypes() {  	learnFlowControl() // Рухаємось далі.  } -// Навідмінну від більшості інших мов програмування, функції в Go підтримують  +// Навідміну від більшості інших мов програмування, функції в Go підтримують   // іменоване значення, що повертається.   // Змінні, значення яких повертається функцією, вказуються із зазначенням типу при -// оголошенні функції. Таким чином, можна з легкістю повернути їх значення в різних +// оголошенні функції. Таким чином, можна з легкістю повернути їхні значення в різних  // точках коду, не перелічуючи їх після ключового слова return.  func learnNamedReturns(x, y int) (z int) {  	z = x * y  	return // z не потрібно вказувати, при оголошенні описано змінну для повернення.  } -// Go використовує сміттєзбірник. В ньому використовуються вказіники, проте немає  +// Go використовує сміттєзбірник. В ньому використовуються вказівники, проте немає   // операцій з вказівниками. Можлива помилка при використовуванні вказівника nil, але не   // при збільшенні значення вказівника (перехід по адресам пам'яті).   func learnMemory() (p, q *int) { -	// Іменованні змінні, що повертаються, p та q, мають тип вказівника на чисельне значення. +	// Іменовані змінні, що повертаються, p та q, мають тип вказівника на чисельне значення.  	p = new(int) // Вбудована функція виділяє нову пам'ять.  	// Виділена адреса пам'яті чисельного типу int ініціалізовується 0, p більше не nil.  	s := make([]int, 20) // Виділити пам'ять для 20 чисел у вигляді суцільного блоку в пам'яті. @@ -186,7 +186,7 @@ func learnFlowControl() {  	} else {  		// Gloat.  	} -	// Використання перемикача (switch) замість ланцюга if-стверджень. +	// Використання перемикача (switch) замість ланцюга if-тверджень.  	x := 42.0  	switch x {  	case 0: @@ -206,7 +206,7 @@ func learnFlowControl() {  	}  	// Тут x == 42. -	// For - це єдиний в Go, але він бає кілька різних форм. +	// For - це єдиний цикл в Go, проте він має кілька різних форм.  	for { // Ініціалізація циклу.  		break    // Упс, помилково зайшли.  		continue // Недоступне твердження. @@ -224,14 +224,13 @@ func learnFlowControl() {  		fmt.Printf("Hello, %s\n", name)  	} -	// так само, як і з циклом for, оператор := в розгалудженні if одначає оголосити  -	// локальну змінну y в області видимості if та присвоїти їх значення. Далі +	// так само, як і з циклом for, оператор := в розгалуженні означає оголосити  +	// локальну змінну в області видимості if та присвоїти значення. Далі  	// значення змінної проходить перевірку y > x.  	if y := expensiveComputation(); y > x {  		x = y  	} -	// Літерали функцій та замикання -	// Function literals are closures. +	// Літерали функцій - це замикання  	xBig := func() bool {  		return x > 10000 // Посилання на x, що був оголошений раніше, перед switch.  	} @@ -241,8 +240,8 @@ func learnFlowControl() {  	fmt.Println("xBig:", xBig()) // false тепер.  	// Функція може бути оголошена та викликана в одному рядку, поводячи себе  -	// як аргумент функції, алк за наступних умов: -	// 1) літерал функціх негайно викликається за допомогою () +	// як аргумент функції, але за наступних умов: +	// 1) літерал функції негайно викликається за допомогою ()  	// 2) тип значення, що повертається, точно відповідає очікуваному типу аргументу  	fmt.Println("Add + double two numbers: ",  		func(a, b int) int { @@ -269,8 +268,8 @@ func learnFunctionFactory() {  	fmt.Println(d("A lazy", "afternoon!"))  } -// Декоратори звична річ для багатьох мов прогрмування. В Go їх можна реалізувати -// за допомогою літералів функцій, що прикмають агрументи. +// Декоратори звична річ для багатьох мов програмування. В Go їх можна реалізувати +// за допомогою літералів функцій, що приймають аргументи.  func sentenceFactory(mystring string) func(before, after string) string {  	return func(before, after string) string {  		return fmt.Sprintf("%s %s %s", before, mystring, after) // новий рядок @@ -278,13 +277,13 @@ func sentenceFactory(mystring string) func(before, after string) string {  }  func learnDefer() (ok bool) { -	// Відкладете тверодження змушує функцію посилатись по список. Список  +	// твердження defer змушує функцію посилатись на список. Список   	// збережених викликів виконується ПІСЛЯ того, як оточуюча функція закінчує  	// виконання.  	defer fmt.Println("відкладені твердження виконуються у зворотньому порядку (LIFO).")  	defer fmt.Println("\nЦей рядок надрукується першим, тому що")  	// Відкладення зазвичай використовується для того, щоб закрити файл. Таким чином, -	// функція, що закриває файл, залишається близькою до функції, що вікриває файл. +	// функція, що закриває файл, залишається близькою до функції, що відкриває файл.  	return true  } @@ -301,15 +300,15 @@ type pair struct {  // Оголошує метод для типу pair. pair тепер реалізує Stringer, оскільки pair оголосив  // всі методи в цьому інтерфейсі.  func (p pair) String() string { // p тепер називається "приймачем" -	// Sprintf - ще ожна функція з пакету fmt. +	// Sprintf - ще одна функція з пакету fmt.  	// Крапка використовується, щоб звернутись до полів об'єкту p.  	return fmt.Sprintf("(%d, %d)", p.x, p.y)  }  func learnInterfaces() { -	// Синтакс з використанням фігурних дужок називається "літералом стуктури". +	// Синтаксис з використанням фігурних дужок називається "літералом структури".  	// Він застосовується до ініціалізованої структури. Оператор := оголошує -	// на ініціалізовує p цією структурою. +	// та ініціалізує p цією структурою.  	p := pair{3, 4}  	fmt.Println(p.String()) // Викликає метод String об'єкта p типу pair.  	var i Stringer          // Оголошує і інтерфейсного типу Stringer. @@ -341,7 +340,7 @@ func learnVariadicParams(myStrings ...interface{}) {  }  func learnErrorHandling() { -	// Ідіома ", ok"використовується, щоб повідомичи чи щось спрацювало, чи ні. +	// Ідіома ", ok"використовується, щоб перевірити виконання команди без помилок.  	m := map[int]string{3: "three", 4: "four"}  	if x, ok := m[1]; !ok { // ok буде мати значення false, тому що 1 не знаходиться   							// в асоціативному масиві. @@ -359,21 +358,21 @@ func learnErrorHandling() {  	learnConcurrency()  } -// Канал с - це потокозохіщений об'єкт для спілкування між потоками. +// Канал с - це потокозохищений об'єкт для спілкування між потоками.  func inc(i int, c chan int) {  	c <- i + 1 // Оператор <- виконує операцію "надіслати",якщо змінна каналу   			   // знаходиться зліва від нього.  } -// inc виконує збільшення значення на 1. Ви використаємо його, щоб інкрементувати +// inc виконує збільшення значення на 1. Ми використаємо його, щоб збільшувати  // числа рівночасно.  func learnConcurrency() {  	// вже знайома функція make, яка раніше використовувалась для виділення пам'яті,   	// тут використовується для створення каналу. Make виділяє пам'ять та ініціалізує -	// зрізи, асоціовані масиви та канали. Новостворений канал буде передавати  +	// зрізи, асоційовані масиви та канали. Новостворений канал буде передавати   	// цілочисельні значення.  	c := make(chan int) -	// Запустити три одночасні ґорутини. Числа будуть збільшуватись рівночасно, імовіно +	// Запустити три одночасні ґорутини. Числа будуть збільшуватись рівночасно, імовірно  	// паралельно якщо пристрій здатний до цього та правильно сконфігурований.  	// Всі три ґорутини надсилають значення в один канал.  	go inc(0, c) // Твердження go запускає нову ґорутину. @@ -388,11 +387,11 @@ func learnConcurrency() {  	ccs := make(chan chan string) // Канал каналів рядків.  	go func() { c <- 84 }()       // Запустимо нову ґорутину, щоб надіслати значення в канал с.  	go func() { cs <- "wordy" }() // Надсилаємо "wordy" в канал cs. -	// Ключове слово select має подібний до синтаксис до switch, проте кожен кейс +	// Ключове слово select має синтаксис, подібний до switch, проте кожен кейс  	// включає в себе операцію з каналом. Він обирає довільний кейс з наявних, які готові  	// комунікувати (передавати дані).  	select { -	case i := <-c: // Отримане значення може бути присвоєне змінній, +	case i := <-c: // Отримане значення може бути присвоєно змінній,  		fmt.Printf("it's a %T", i)  	case <-cs: // або значення може бути проігнороване.  		fmt.Println("it's a string") @@ -402,13 +401,13 @@ func learnConcurrency() {  	// На цьому етапі, значення було прочитане або з с або з cs. Одна з двох  	// ґорутин завершилась, але інша все ще заблокована. -	learnWebProgramming() // Go вмає й веб. Так, ти хочеш зробити це. +	learnWebProgramming() // Go вміє й у веб. Так, ти хочеш зробити це.  }  // Лиш одна функція з пакету http запускає веб сервер.  func learnWebProgramming() { -	// перший аргумент ListenAndServe - це TCP адрес, який сервер буде слухати. +	// перший аргумент ListenAndServe - це TCP адреса, який сервер буде слухати.  	// Другий аргумент - це інтерфейс, а точніше http.Handler.  	go func() {  		err := http.ListenAndServe(":8080", pair{}) @@ -435,16 +434,16 @@ func requestServer() {  ## Подальше вивчення -Основним джерелом всієї інформації про Go залишається [офіційна веб-сторінка](http://golang.org/). Там можна знайти уроки, інтерактивно погратись та багато про що почитати. +Основним джерелом всієї інформації про Go залишається [офіційна веб-сторінка](http://golang.org/). Там можна знайти уроки, інтерактивно пограти та багато про що почитати.  Окрім туру, у [документації](https://golang.org/doc/) міститься інформація як писати чистий та ефективний код на Go, документація пакетів та окремих команд, а також історія релізів.  Надзвичайно рекомендується ознайомитись із визначенням мови. Вона легко читається та на диво коротка (в порівнянні з іншими сучасними мовами). -Можна погратись з кодом вище на [Go playground](https://play.golang.org/p/tnWMjr16Mm). Спробуй змінити його та запустити із свого браузера. Поміть, що можна використовувати [https://play.golang.org](https://play.golang.org) як [REPL](https://en.wikipedia.org/wiki/Read-eval-print_loop) до тестів та коду в твоєму браузері, без встановлення Go. +Можна погратись з кодом вище на [Go playground](https://play.golang.org/p/tnWMjr16Mm). Спробуй змінити його та запустити із свого браузера. Поміть, що можна використовувати [https://play.golang.org](https://play.golang.org) як [REPL](https://uk.wikipedia.org/wiki/REPL) до тестів та коду в твоєму браузері, без встановлення Go. -В списку для прочитання новичкам в Go - [вихідний код стандартної бібліотеки](http://golang.org/src/pkg/). Код всеосяжно продукоментований, тому є найкращим прикладом з боку зручного для прочитання та швидкості розуміння коду на цій мові програмування. Приведений стиль та ідіоми Go. -Крім того, можна просто натиснути на назву функції в [документації](http://golang.org/pkg/) щоб перейти до її реалізації. +В списку для прочитання новачкам в Go - [вихідний код стандартної бібліотеки](http://golang.org/src/pkg/). Код всеосяжно задокоментований, тому є найкращим прикладом з боку зручного для прочитання та швидкості розуміння коду на цій мові програмування. Приведений стиль та ідіоми Go. +Крім того, можна просто натиснути на назву функції в [документації](http://golang.org/pkg/), щоб перейти до її реалізації.  Іншим прекрасним посиланням для вивчення Go є [Go by example](https://gobyexample.com/). -Go Mobile додає підтримку мобільних платформ (Android та iOS). Можна написати нативний код на Go  для мобільних застосунків або написати бібіотеку, що міститиме прив'язки (bindings) з пакету Go, які можуть бути викликані з Java (Android) та Objective-C (iOS). Деталі можна дізнатись на [веб-сторінці Go Mobile](https://github.com/golang/go/wiki/Mobile). +Go Mobile додає підтримку мобільних платформ (Android та iOS). Можна написати нативний код на Go  для мобільних застосунків або написати бібліотеку, що міститиме прив'язки (bindings) з пакету Go, які можуть бути викликані з Java (Android) та Objective-C (iOS). Деталі можна дізнатись на [веб-сторінці Go Mobile](https://github.com/golang/go/wiki/Mobile). | 
