Язык программирования go для perl-программистов
DESCRIPTION
Введение в язык программирования Go с интересными примерами.TRANSCRIPT
![Page 1: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/1.jpg)
Язык Go для Perl-программистов
![Page 2: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/2.jpg)
— Зачем знать про Go?— Откуда про него узнать?— Зачем нужен Go?
![Page 3: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/3.jpg)
![Page 4: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/4.jpg)
Почему Goна Perl-мероприятии?
![Page 5: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/5.jpg)
Кругозор
![Page 6: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/6.jpg)
Тренды
![Page 7: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/7.jpg)
XXI век
![Page 8: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/8.jpg)
![Page 9: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/9.jpg)
![Page 10: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/10.jpg)
![Page 11: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/11.jpg)
Дух перла (совсем немного)
![Page 12: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/12.jpg)
Дух перла (совсем немного)
душок :-)
![Page 13: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/13.jpg)
UTF-8всегда и везде
![Page 14: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/14.jpg)
UTF-8всегда и везде
Даже в именах переменных
![Page 15: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/15.jpg)
UTF-8всегда и везде
Даже в именах переменных
Perl 6!
![Page 16: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/16.jpg)
return a, b
![Page 17: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/17.jpg)
return a, b
Perl!
![Page 18: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/18.jpg)
golang.org
Написан на Go
![Page 19: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/19.jpg)
tour.golang.org
Есть офлайновая версия
![Page 20: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/20.jpg)
goprogrammingbook.com
![Page 21: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/21.jpg)
Март 2012
![Page 22: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/22.jpg)
Локальный golang.org
$ godoc -‐http=:6060
![Page 23: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/23.jpg)
The Go programming language is an open source project to make programmers more productive.
«
»
![Page 24: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/24.jpg)
Perl is a general-purpose programming language originally developed for text manipulation
«
»
![Page 25: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/25.jpg)
Go is expressive, concise, clean, and efficient.
«»
![Page 26: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/26.jpg)
The language is intended to be practical <. . .> rather than beautiful
«»
![Page 27: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/27.jpg)
Go — компилируемый
язык
![Page 28: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/28.jpg)
Go — быстрокомпилируемый
язык
![Page 29: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/29.jpg)
C-подобный синтаксис
![Page 30: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/30.jpg)
Скорость компиляцииопределяет синтаксис
![Page 31: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/31.jpg)
![Page 32: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/32.jpg)
Встроенный сборщик мусора
![Page 33: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/33.jpg)
Ни на что не похожие интерфейсы
![Page 34: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/34.jpg)
Нет ООП и наследования
![Page 35: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/35.jpg)
В начале 2012обещают
GO 1.0
![Page 36: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/36.jpg)
В GO 1.0 зафиксируют синтаксис
![Page 37: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/37.jpg)
Не все старые программы работают в новых релизах Go
![Page 38: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/38.jpg)
Не все старые программы работают в новых релизах Go
Perl 6!
![Page 39: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/39.jpg)
— Синтаксис— Интерфейсы
![Page 40: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/40.jpg)
Синтаксис
![Page 41: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/41.jpg)
01-‐hello.goaddr_in_noninit.goarray.goassign-‐new.goblank.gochannel.goclose_channel.gocomplex.gocopy-‐array.godb.godefer-‐func.godefer.godial.goecho.goeven-‐use.goeven.gofactorial.gofmt.gogoroutine.goimport_.goinit.goint_method.go
interface.gointerface_vars.goiota.goiota_print-‐1.goiota_print-‐2.goiota_print.golen.gomap.gomap_autovivif.gomap_non_existent.gomul_int64.goopenfile.gopanic.gopointer.gopp.goprintln.goq10.goq11.goq12.goq12a.goq2-‐2.goq2-‐3.go
q3.goq4-‐2.goq4-‐4.goq4.goq6.goq7.goq9.gorandom-‐select.gorange-‐string.gorange.goreceiver.gorecover.goreslice.gosort-‐delay-‐1.gosort-‐delay.gosort.gostring_range.gostruct.goswitch.gotype-‐struct.govar.govariadic.go
![Page 42: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/42.jpg)
Hello, World!
![Page 43: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/43.jpg)
package main
import "fmt"
func main() { fmt.Println("Hello, World!")}
![Page 44: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/44.jpg)
Многабукаф?
![Page 45: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/45.jpg)
class HelloWorld { static public void main(String args[]) { System.out.println( "Hello, World!" ); }}
Java
![Page 46: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/46.jpg)
#include<iostream>
int main() { std::cout << "Hello, World!\n"; return 0;}
C++
![Page 47: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/47.jpg)
package main
import "fmt"
func main() { fmt.Println("Hello, World!")}
Go
![Page 48: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/48.jpg)
package main
import "fmt"
func main() { fmt.Println("Hello, World!")}
![Page 49: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/49.jpg)
;
![Page 50: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/50.jpg)
package main
import "fmt"
func main() { fmt.Println("Hello, World!")}
![Page 51: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/51.jpg)
package main;
import "fmt";
func main() { fmt.Println("Hello, World!");}
![Page 52: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/52.jpg)
package main;
import "fmt";
func main() { fmt.Println("Hello, World!");}
![Page 53: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/53.jpg)
package main;
import "fmt";
func main() { fmt.Println("Hello, World!");}
![Page 54: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/54.jpg)
f()
![Page 55: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/55.jpg)
func factorial(n int) (int) { if (n < 2) { return 1 } return n * factorial(n -‐ 1)}
![Page 56: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/56.jpg)
func factorial(n int) (int) { if (n < 2) { return 1 } return n * factorial(n -‐ 1)}
![Page 57: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/57.jpg)
func factorial(n int) (int) { if (n < 2) { return 1 } return n * factorial(n -‐ 1)}
![Page 58: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/58.jpg)
func factorial(n int) (int) { if (n < 2) { return 1 } return n * factorial(n -‐ 1)}
Go
![Page 59: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/59.jpg)
int factorial(n int) { if (n < 2) { return 1 } return n * factorial(n -‐ 1)}
C++
![Page 60: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/60.jpg)
:=
![Page 61: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/61.jpg)
:=Да-да, навеяно Паскалем
![Page 62: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/62.jpg)
«Динамические типы»
![Page 63: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/63.jpg)
bool
string
int int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptr
float32 float64
complex64 complex128
![Page 64: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/64.jpg)
func main() { for c := 0; c != 10; c++ { fmt.Printf( "%d! = %d\n", c, factorial(c))
}}
![Page 65: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/65.jpg)
var x int
![Page 66: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/66.jpg)
var x int = 10
![Page 67: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/67.jpg)
x := 10
![Page 68: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/68.jpg)
var x int = 10
x := 10
Одно и то же
![Page 69: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/69.jpg)
defer
![Page 70: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/70.jpg)
«Стек блоков END»
![Page 71: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/71.jpg)
func d() { defer fmt.Println("Before 2") defer fmt.Println("Before 1") fmt.Printf("a\n") return}
![Page 72: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/72.jpg)
func d() { defer fmt.Println("Before 2") defer fmt.Println("Before 1") fmt.Printf("a\n") return}
aBefore 1Before 2
![Page 73: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/73.jpg)
range
![Page 74: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/74.jpg)
each в перле
![Page 75: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/75.jpg)
package main
func main() { var list = []string{"a", "b"}
for k, v := range list { println(k, v) }}
![Page 76: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/76.jpg)
_
![Page 77: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/77.jpg)
Это не $_
![Page 78: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/78.jpg)
package main
func main() { var list = []string{"a", "b"}
for k, v := range list { println(k, v) }}
![Page 79: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/79.jpg)
package main
func main() { var list = []string{"a", "b"}
for k, v := range list { println(v) }}
![Page 80: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/80.jpg)
package main
func main() { var list = []string{"a", "b"}
for k, v := range list { println(v) }}
range.go:5: k declared and not used
![Page 81: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/81.jpg)
package main
func main() { var list = []string{"a", "b"}
for _, v := range list { println(v) }}
![Page 82: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/82.jpg)
Похоже на (undef, $v) = @list;
![Page 83: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/83.jpg)
package main
func main() { var list = []string{"a", "b"}
for _, v := range list { println(v) }}
Struct literal
![Page 84: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/84.jpg)
Интерфейсы
![Page 85: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/85.jpg)
Нет классов
![Page 86: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/86.jpg)
Нет наследования
![Page 87: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/87.jpg)
Есть методы
![Page 88: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/88.jpg)
type I interface { Get() int Set(int)}
![Page 89: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/89.jpg)
func assign_and_print(x I, v int) { x.Set(v) fmt.Printf("%v\n", x.Get())}
![Page 90: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/90.jpg)
func assign_and_print(x I, v int) { x.Set(v) fmt.Printf("%v\n", x.Get())}
![Page 91: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/91.jpg)
type s struct { i int}
![Page 92: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/92.jpg)
func (x *s) Get() int { return x.i}
func (x *s) Set(i int) { x.i = i}
![Page 93: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/93.jpg)
func assign_and_print(x I, v int) { x.Set(v) fmt.Printf("%v\n", x.Get())}
![Page 94: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/94.jpg)
func main() { var y s assign_and_print(&y, 42)}
![Page 95: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/95.jpg)
Пример 1
Wiki
![Page 96: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/96.jpg)
func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.HandleFunc("/save/", saveHandler) http.ListenAndServe(":8080", nil)}
![Page 97: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/97.jpg)
func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.HandleFunc("/save/", saveHandler) http.ListenAndServe(":8080", nil)}
![Page 98: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/98.jpg)
func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[lenPath:] p, err := loadPage(title) if err == nil { fmt.Fprintf(w, "<h1>%s</h1><div>%s</div>", p.Title, p.Body) } else { http.Redirect(w, r, "/edit/" + title, http.StatusFound) return }}
![Page 99: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/99.jpg)
func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[lenPath:] p, err := loadPage(title) if err == nil { fmt.Fprintf(w, "<h1>%s</h1><div>%s</div>", p.Title, p.Body) } else { http.Redirect(w, r, "/edit/" + title, http.StatusFound) return }}
![Page 100: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/100.jpg)
func loadPage(title string) (*Page, os.Error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil}
![Page 101: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/101.jpg)
func loadPage(title string) (*Page, os.Error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil}
![Page 102: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/102.jpg)
type Page struct { Title string Body []byte}
![Page 103: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/103.jpg)
func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.HandleFunc("/save/", saveHandler) http.ListenAndServe(":8080", nil)}
![Page 104: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/104.jpg)
func editHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[lenPath:] p, err := loadPage(title) if err != nil { p = &Page{Title: title} } fmt.Fprintf(w, "<h1>Editing %s</h1>" + "<form action=\"/save/%s\" method=\"POST\">" + "<textarea name=\"body\">%s</textarea><br />" + "<input type=\"submit\" value=\"Save\" />" + "</form>", p.Title, p.Title, p.Body)}
![Page 105: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/105.jpg)
func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.HandleFunc("/save/", saveHandler) http.ListenAndServe(":8080", nil)}
![Page 106: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/106.jpg)
func saveHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[lenPath:] body := r.FormValue("body") p := &Page{Title: title, Body: []byte(body)} p.save() http.Redirect(w, r, "/view/" + title, http.StatusFound)}
![Page 107: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/107.jpg)
func saveHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[lenPath:] body := r.FormValue("body") p := &Page{Title: title, Body: []byte(body)} p.save() http.Redirect(w, r, "/view/" + title, http.StatusFound)}
![Page 108: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/108.jpg)
func (p *Page) save() os.Error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600)}
![Page 109: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/109.jpg)
func (p *Page) save() os.Error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600)}
p.save()
![Page 110: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/110.jpg)
— Параллельность— Обмен данными между потоками
![Page 111: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/111.jpg)
Горутиныи
каналы
![Page 112: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/112.jpg)
-‐>
![Page 113: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/113.jpg)
<-‐
![Page 114: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/114.jpg)
Пример 2
Sleep sort
![Page 115: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/115.jpg)
#!/bin/bashfunction f() { sleep "$1" echo "$1"}while [ -‐n "$1" ]do f "$1" & shiftdonewait
![Page 116: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/116.jpg)
func main() { values := []int{3, 1, ..., 10} get_value = make(chan int) for _, x := range values { go send_value(x) } for range values { fmt.Println(<-‐ get_value) }}
![Page 117: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/117.jpg)
func main() { values := []int{3, 1, ..., 10} get_value = make(chan int) for _, x := range values { go send_value(x) } for range values { fmt.Println(<-‐ get_value) }}
![Page 118: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/118.jpg)
func main() { values := []int{3, 1, ..., 10} get_value = make(chan int) for _, x := range values { go send_value(x) } for range values { fmt.Println(<-‐ get_value) }}
![Page 119: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/119.jpg)
var get_value chan int
get_value = make(chan int)
![Page 120: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/120.jpg)
var get_value chan int
get_value = make(chan int)
get_value <-‐ x Запись в канал
![Page 121: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/121.jpg)
var get_value chan int
get_value = make(chan int)
get_value <-‐ x Запись в канал
y := <-‐ get_value Чтение из канала
![Page 122: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/122.jpg)
go f(x, y, z)
![Page 123: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/123.jpg)
func main() { values := []int{3, 1, ..., 10} get_value = make(chan int) for _, x := range values { go send_value(x) } for range values { fmt.Println(<-‐ get_value) }}
![Page 124: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/124.jpg)
func main() { values := []int{3, 1, ..., 10} get_value = make(chan int) for _, x := range values { go send_value(x) } for range values { fmt.Println(<-‐ get_value) }}
![Page 125: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/125.jpg)
func main() { values := []int{3, 1, ..., 10} get_value = make(chan int) for _, x := range values { go send_value(x) } for range values { fmt.Println(<-‐ get_value) }}
![Page 126: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/126.jpg)
func send_value(x int) { time.Sleep(int64(x) * 1E8) get_value <-‐ x}
![Page 127: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/127.jpg)
func send_value(x int) { time.Sleep(int64(x) * 1E8) get_value <-‐ x}
![Page 128: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/128.jpg)
func send_value(x int) { time.Sleep(int64(x) * 1E8) get_value <-‐ x}
![Page 129: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/129.jpg)
— Стандартные модули— «CPAN»
![Page 130: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/130.jpg)
golang.org/pkgarchive/tararchive/zipbigbufiobytescmathcompress/*container/*crypto/*debugebnfencoding
execexp/regexflagfmtgo/*hash/*http/cgihttp/fcgiimage/*io/ioutillogmail
netos/*path/filepathrpcruntime/*smtpsorttesting/*timeunicodewebsocketxml
![Page 131: Язык программирования Go для Perl-программистов](https://reader030.vdocuments.mx/reader030/viewer/2022013111/5549cbe8b4c9057c6d8b496f/html5/thumbnails/131.jpg)
code.google.com/p/*
github.com/*