мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
golang [21/04/2016 20:23] – [Минимальный набор элементов] vlasovgolang [07/09/2018 21:51] (текущий) – [Установка бинарного дистрибутива] ybezrukov
Строка 26: Строка 26:
   - устанавливаем системные переменные и изменения в переменной $PATH путем редактирования файла .profile   - устанавливаем системные переменные и изменения в переменной $PATH путем редактирования файла .profile
 <code bash> <code bash>
-EXPORT GOROOT="$HOME/go" +export GOROOT="$HOME/go" 
-EXPORT GOPATH="$HOME/mygoprojects" +export GOPATH="$HOME/mygoprojects" 
-EXPORT GOBIN="$HOME/mygoprojects/bin"</code>и в переменной <nowiki>$PATH:</nowiki><code bash>PATH=$HOME/go/bin:$PATH"+export GOBIN="$HOME/mygoprojects/bin"</code>и в переменной <nowiki>$PATH:</nowiki><code bash>PATH=$HOME/go/bin:$PATH"
 </code> </code>
- 
  
 ===== Основные возможности ===== ===== Основные возможности =====
Строка 82: Строка 81:
 Полная форма задания переменных выглядит примерно так: Полная форма задания переменных выглядит примерно так:
  
-<code golang>+<code go>
 var x float64 = 1.234 var x float64 = 1.234
 </code> </code>
Строка 94: Строка 93:
  
 Но так как поддерживается динамическая типизация, то можно, наоборот, присвоить значение и тип будет выведен: Но так как поддерживается динамическая типизация, то можно, наоборот, присвоить значение и тип будет выведен:
-<code golang>+<code go>
 var x = 1.234 var x = 1.234
 print (x) print (x)
  
-+0.000000e+000++1.234000e+000
 </code> </code>
 или даже проще (как присваивание в Pascal'е): или даже проще (как присваивание в Pascal'е):
-<code golang>+<code go>
 x := 1.234 x := 1.234
 print (x) print (x)
  
-+0.000000e+000++1.234000e+000
 </code> </code>
  
Строка 123: Строка 122:
  
 Рассмотрим на примере. Создадим простейшую структуру, описывающую ученика ФМШ: Рассмотрим на примере. Создадим простейшую структуру, описывающую ученика ФМШ:
-<code golang>+<code go>
 type pupil struct { type pupil struct {
   name string   name string
Строка 135: Строка 134:
  
 Определить новую переменную данного типа можно и объявлением: Определить новую переменную данного типа можно и объявлением:
-<code golang>+<code go>
 var dima pupil var dima pupil
 </code> </code>
 (поля будут инициализированы нулями и пустыми строками), можно сделать более java-образно, с созданием указателя: (поля будут инициализированы нулями и пустыми строками), можно сделать более java-образно, с созданием указателя:
-<code golang>+<code go>
 var dima = new(pupil) var dima = new(pupil)
 </code> </code>
 (об указателях,  в другой раз).  (об указателях,  в другой раз). 
 Но можно сделать инициализацию в стиле Go:  Но можно сделать инициализацию в стиле Go: 
-<code golang>+<code go>
 dima := pupil{name: "Dima", group: 412} dima := pupil{name: "Dima", group: 412}
 </code> </code>
Строка 150: Строка 149:
  
 Теперь к свойствам можно обращаться в ООП-стиле: Теперь к свойствам можно обращаться в ООП-стиле:
-<code golang>+<code go>
 fmt.Println(dima.name, dima.group) fmt.Println(dima.name, dima.group)
 </code> </code>
Строка 157: Строка 156:
  
 Методы, если мы хотим их использовать как в ООП, задаются немного хитрее, нежели свойства-поля. Вот, попробуем вычислить "гармоническое телосложение" по формуле Брока Методы, если мы хотим их использовать как в ООП, задаются немного хитрее, нежели свойства-поля. Вот, попробуем вычислить "гармоническое телосложение" по формуле Брока
-<code golang>+<code go>
 func (p pupil) habitus() float32 { func (p pupil) habitus() float32 {
     return ((p.height - 110) - p.weight)     return ((p.height - 110) - p.weight)
Строка 164: Строка 163:
 После ключевого слова 'func' мы видим "получателя", т.е. задаем тип, с которым будем работать наш метод. Тогда для школьника dima мы можем сделать проверку телосложения: После ключевого слова 'func' мы видим "получателя", т.е. задаем тип, с которым будем работать наш метод. Тогда для школьника dima мы можем сделать проверку телосложения:
  
-<code golang>+<code go>
 dima := pupil{name: "Dima", group: 412, heigh: 170, weight: 68} dima := pupil{name: "Dima", group: 412, heigh: 170, weight: 68}
 fmt.Println(dima.name, dima.habitus()) fmt.Println(dima.name, dima.habitus())
Строка 177: Строка 176:
 === Вывод === === Вывод ===
  
-<code golang>+<code go>
 package main package main
 func main() { func main() {
Строка 186: Строка 185:
 Тем не менее, стандартным способом вывода считается такая конструкция: Тем не менее, стандартным способом вывода считается такая конструкция:
  
-<code golang>+<code go>
 package main package main
 import "fmt" import "fmt"
Строка 199: Строка 198:
 == Попроще == == Попроще ==
  
-<code golang>+<code go>
 package main package main
 import "fmt" import "fmt"
Строка 219: Строка 218:
 Используется буфер! Используется буфер!
  
-<code golang>+<hidden кликнуть чтобы скрыть> 
 +<code go>
 package main package main
 import ( import (
Строка 257: Строка 257:
 } }
 </code> </code>
 +</hidden>
  
 Примеры взяты тут: [[http://rosettacode.org/wiki/User_input/Text#Go|Rosetta Code]] Примеры взяты тут: [[http://rosettacode.org/wiki/User_input/Text#Go|Rosetta Code]]
 +
 +<hidden>Скрытый раздел</hidden>
  
 ===== Создание собственного web-сервера ===== ===== Создание собственного web-сервера =====