мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
golang [12/04/2016 23:01] – vlasov | golang [07/09/2018 21:51] (текущий) – [Установка бинарного дистрибутива] ybezrukov | ||
---|---|---|---|
Строка 24: | Строка 24: | ||
- скачиваем по ссылке [[https:// | - скачиваем по ссылке [[https:// | ||
- распаковываем в домашней директории под именем $HOME/go; | - распаковываем в домашней директории под именем $HOME/go; | ||
- | - устанавливаем системные переменные и изменения в переменной $PATH путем редактирования файла .profile< | + | - устанавливаем системные переменные и изменения в переменной $PATH путем редактирования файла .profile |
- | EXPORT | + | < |
- | EXPORT | + | export |
+ | export | ||
+ | export | ||
+ | </ | ||
===== Основные возможности ===== | ===== Основные возможности ===== | ||
Строка 35: | Строка 37: | ||
==== Минимальный набор элементов ==== | ==== Минимальный набор элементов ==== | ||
- | < | + | < |
package main | package main | ||
import " | import " | ||
Строка 70: | Строка 72: | ||
byte, rune | byte, rune | ||
+ | |||
+ | ==== Определение переменных | ||
+ | |||
+ | === Константы === | ||
+ | |||
+ | === Переменные === | ||
+ | |||
+ | Полная форма задания переменных выглядит примерно так: | ||
+ | |||
+ | <code go> | ||
+ | var x float64 = 1.234 | ||
+ | </ | ||
+ | Значения можно присвоить и позже, более того, при определении переменной будет проведена инициализация в нулевое (для данного типа данных) значение | ||
+ | <code golang> | ||
+ | var x float64 | ||
+ | print (x) | ||
+ | |||
+ | +0.000000e+000 | ||
+ | </ | ||
+ | |||
+ | Но так как поддерживается динамическая типизация, | ||
+ | <code go> | ||
+ | var x = 1.234 | ||
+ | print (x) | ||
+ | |||
+ | +1.234000e+000 | ||
+ | </ | ||
+ | или даже проще (как присваивание в Pascal' | ||
+ | <code go> | ||
+ | x := 1.234 | ||
+ | print (x) | ||
+ | |||
+ | +1.234000e+000 | ||
+ | </ | ||
==== Базовые сложные типы данных ==== | ==== Базовые сложные типы данных ==== | ||
Строка 83: | Строка 119: | ||
=== Структуры === | === Структуры === | ||
- | Структуры --- с одной стороны напоминают таковые в Си, с другой, | + | Структуры --- с одной стороны напоминают таковые в Си, с другой, |
Рассмотрим на примере. Создадим простейшую структуру, | Рассмотрим на примере. Создадим простейшую структуру, | ||
- | < | + | < |
type pupil struct { | type pupil struct { | ||
name string | name string | ||
Строка 97: | Строка 133: | ||
</ | </ | ||
- | + | Определить новую переменную | |
- | === Методы === | + | <code go> |
- | + | var dima pupil | |
- | === Интерфейсы === | + | </ |
- | + | (поля будут инициализированы нулями и пустыми строками), можно сделать более java-образно, с созданием | |
- | ==== Типы | + | < |
- | + | var dima = new(pupil) | |
- | ==== Определение переменных | + | |
- | + | ||
- | === Константы === | + | |
- | + | ||
- | === Переменные === | + | |
- | + | ||
- | Полная форма задания переменных выглядит примерно так: | + | |
- | + | ||
- | < | + | |
- | var x float64 | + | |
</ | </ | ||
- | Значения можно | + | (об указателях, в другой раз). |
- | <code golang> | + | Но можно сделать инициализацию в стиле Go: |
- | var x float64 | + | <code go> |
- | print (x) | + | dima := pupil{name: " |
+ | </ | ||
+ | (пропущенные поля вновь будут инициализированы | ||
- | +0.000000e+000 | + | Теперь к свойствам можно обращаться в ООП-стиле: |
+ | <code go> | ||
+ | fmt.Println(dima.name, | ||
</ | </ | ||
- | Но так как поддерживается динамическая типизация, | + | === Методы === |
- | <code golang> | + | |
- | var x = 1.234 | + | |
- | print (x) | + | |
- | +0.000000e+000 | + | Методы, |
+ | <code go> | ||
+ | func (p pupil) habitus() float32 { | ||
+ | return ((p.height - 110) - p.weight) | ||
+ | } | ||
</ | </ | ||
- | или даже проще (как присваивание в Pascal' | + | После ключевого слова ' |
- | <code golang> | + | |
- | x := 1.234 | + | |
- | print (x) | + | |
- | +0.000000e+000 | + | <code go> |
+ | dima := pupil{name: " | ||
+ | fmt.Println(dima.name, | ||
</ | </ | ||
+ | |||
+ | === Интерфейсы === | ||
+ | |||
+ | ==== Типы данных, | ||
==== Вывод и ввод (простой вариант) ==== | ==== Вывод и ввод (простой вариант) ==== | ||
Строка 142: | Строка 176: | ||
=== Вывод === | === Вывод === | ||
- | < | + | < |
package main | package main | ||
func main() { | func main() { | ||
Строка 151: | Строка 185: | ||
Тем не менее, стандартным способом вывода считается такая конструкция: | Тем не менее, стандартным способом вывода считается такая конструкция: | ||
- | < | + | < |
package main | package main | ||
import " | import " | ||
Строка 164: | Строка 198: | ||
== Попроще == | == Попроще == | ||
- | < | + | < |
package main | package main | ||
import " | import " | ||
Строка 184: | Строка 218: | ||
Используется буфер! | Используется буфер! | ||
- | < | + | <hidden кликнуть чтобы скрыть> |
+ | < | ||
package main | package main | ||
import ( | import ( | ||
Строка 222: | Строка 257: | ||
} | } | ||
</ | </ | ||
+ | </ | ||
Примеры взяты тут: [[http:// | Примеры взяты тут: [[http:// | ||
+ | |||
+ | < | ||
===== Создание собственного web-сервера ===== | ===== Создание собственного web-сервера ===== | ||
- | На основе статей [[https:// | + | На основе статей [[https:// |
+ | |||
+ | Замечательная книга товарища astaxie в настоящий момент переводится на русский язык, и нужные нам главы уже доступны на русском: | ||
Пока, вот минимальный код: | Пока, вот минимальный код: | ||
- | < | + | < |
package main | package main | ||
Строка 249: | Строка 289: | ||
</ | </ | ||
- | просто сохраняем (напр., | + | просто сохраняем (напр., |