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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Последняя версияСледующая версия справа и слева
golang [21/04/2016 12:56] vlasovgolang [21/04/2016 22:56] – [Определение переменных и констант] vlasov
Строка 24: Строка 24:
   - скачиваем по ссылке [[https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz|бинарник версии 1.4.3]];   - скачиваем по ссылке [[https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz|бинарник версии 1.4.3]];
   - распаковываем в домашней директории под именем $HOME/go;   - распаковываем в домашней директории под именем $HOME/go;
-  - устанавливаем системные переменные и изменения в переменной $PATH путем редактирования файла .profile<code golang>EXPORT GOROOT="$HOME/go"+  - устанавливаем системные переменные и изменения в переменной $PATH путем редактирования файла .profile 
 +<code bash> 
 +EXPORT GOROOT="$HOME/go"
 EXPORT GOPATH="$HOME/mygoprojects" EXPORT GOPATH="$HOME/mygoprojects"
-EXPORT GOBIN="$HOME/mygoprojects/bin"</code>и в переменной $PATH:<code golang>PATH=$HOME/go/bin:$PATH"</code>+EXPORT GOBIN="$HOME/mygoprojects/bin"</code>и в переменной <nowiki>$PATH:</nowiki><code bash>PATH=$HOME/go/bin:$PATH" 
 +</code>
  
  
Строка 35: Строка 38:
 ==== Минимальный набор элементов ==== ==== Минимальный набор элементов ====
  
-<code golang>+<code go>
 package main package main
 import "fmt" import "fmt"
Строка 79: Строка 82:
 Полная форма задания переменных выглядит примерно так: Полная форма задания переменных выглядит примерно так:
  
-<code golang>+<code go>
 var x float64 = 1.234 var x float64 = 1.234
 </code> </code>
Строка 91: Строка 94:
  
 Но так как поддерживается динамическая типизация, то можно, наоборот, присвоить значение и тип будет выведен: Но так как поддерживается динамическая типизация, то можно, наоборот, присвоить значение и тип будет выведен:
-<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>
  
Строка 120: Строка 123:
  
 Рассмотрим на примере. Создадим простейшую структуру, описывающую ученика ФМШ: Рассмотрим на примере. Создадим простейшую структуру, описывающую ученика ФМШ:
-<code golang>+<code go>
 type pupil struct { type pupil struct {
   name string   name string
Строка 132: Строка 135:
  
 Определить новую переменную данного типа можно и объявлением: Определить новую переменную данного типа можно и объявлением:
-<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>
Строка 147: Строка 150:
  
 Теперь к свойствам можно обращаться в ООП-стиле: Теперь к свойствам можно обращаться в ООП-стиле:
-<code golang>+<code go>
 fmt.Println(dima.name, dima.group) fmt.Println(dima.name, dima.group)
 </code> </code>
Строка 154: Строка 157:
  
 Методы, если мы хотим их использовать как в ООП, задаются немного хитрее, нежели свойства-поля. Вот, попробуем вычислить "гармоническое телосложение" по формуле Брока Методы, если мы хотим их использовать как в ООП, задаются немного хитрее, нежели свойства-поля. Вот, попробуем вычислить "гармоническое телосложение" по формуле Брока
-<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)
Строка 161: Строка 164:
 После ключевого слова '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())
Строка 174: Строка 177:
 === Вывод === === Вывод ===
  
-<code golang>+<code go>
 package main package main
 func main() { func main() {
Строка 183: Строка 186:
 Тем не менее, стандартным способом вывода считается такая конструкция: Тем не менее, стандартным способом вывода считается такая конструкция:
  
-<code golang>+<code go>
 package main package main
 import "fmt" import "fmt"
Строка 196: Строка 199:
 == Попроще == == Попроще ==
  
-<code golang>+<code go>
 package main package main
 import "fmt" import "fmt"
Строка 216: Строка 219:
 Используется буфер! Используется буфер!
  
-<code golang>+<hidden кликнуть чтобы скрыть> 
 +<code go>
 package main package main
 import ( import (
Строка 254: Строка 258:
 } }
 </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-сервера =====
Строка 265: Строка 272:
 Пока, вот минимальный код: Пока, вот минимальный код:
  
-<code golang>+<code go>
 package main package main