ááŒá®ážáá²á·áá±á¬ááá»á¬ážá¡ááœááºáž áá»áœááºá¯ááºááẠGo ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá±áá«áááºá
á¡á¬ážáááºážáá±á¬ áááá¯ááááºáá¬áá»á¬ážá¡ááœáẠáá®ááá¯ááºážáá¯ááºáá¬ážáá«ááá¬ážá
Go ááẠáááºáá°ááẠá¡ááœááºááœááºáá°áááºá ááá¯á·ááŒá±á¬áá·áº áááá«ááºážááœáẠáá»áœááºá¯ááºá¡á¬áž áá
áºááá±ááœáẠáá±á«áºáá±á¬ááºááœá¬ážááŒá®ážáá±á¬áẠáá»áœááºá¯ááºááẠáá¯ááºááᯠáá±á¬ááºážá
áœá¬ áááºááá¯ááºááẠá áá»áœááºáá±á¬áºáá±á·áá¬áá°ážáá²á·á
á¬á¡á¯ááºááᯠGo ááá¯á·áá±á«áºáá«áááºá
Google á Go áááá¯ážááŸááºážááŸá¯ááẠáááºážááá±á¬ááºážá¡á¬ážá¡áá»ááºááŒá áºááŒá®áž áá¬áá¬á áá¬ážááẠá¡áááºážááŒá®ážáá»á¬ážááœáẠá¡áá»á¬ážáá¯á¶ážáá¯ááºáá¯ááºááá¯ááºá áœááºážááŸáá á±ááẠáá®ááá¯ááºážáá¯ááºáá¬ážáá±á¬áºáááºáž áááºážááᯠáá¶ááááŒá áºáááááºá áá»á±á¬ááºáá¯á¶ážáá±ááẠááá¯á·ááá¯áẠá¡áá±ážá áááºááœááºážáá±á¬ á¡ááºá¹áá«áááºáá»á¬áž ááŸááá«áááºá áááºážááá¯á·ááẠááŸááºáááºáá±á¬áá¬á០ááá¯ááºááá¯ááºáᯠáá°ááá»ááºááŒáá·áº developer áá»á¬ážá¡áá±á«áº áá¯á¶ááŒááºááŸá¯áááŸáááŒááºážááŒá±á¬áá·áº ááŒá áºáááºá ááá¯ážááŸááºážááŸá¯á¡ááœáẠá€ááá¹áááẠáá¬áá¬á áá¬ážá áá®ááá¯ááºáá¬áá»á¬ážá á¡áááá¬ááºááŒáá·áº áá¯á¶ážááŒááºáá²á·ááŒááºážááŒá áºááŒá®áž áááºážááᯠá¡áááºááŒá±á¬áá·áº ááá¯á¡ááºááŒá±á¬ááºáž á¡ááŒáá·áºá¡á áá¬ážáááºááá¯ááºáááºá áá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬ážá á á±á·áá±á¬áºááŸá¯ááŸáá·áº Go ááœáẠá¡á±á¬ááºááŒááºááẠáááºážááá¯á·ááŒáá¯ážá á¬ážáá±áááºááᯠáá»áœááºá¯ááºááá¯á· áá¬ážáááºááá«áááºá
áá«ááᯠáá¬ááŒá±á¬áá·áº áá®áá±á¬ááºááá¯ážááŸááºážá¡á±á¬áẠáá¯ááºáá¬ážáá¬áá²á á€áááºááŸá¬ ááá¯ážáá¬ážáá»ááºá¡áá»áá¯á·ááŒá
áºáááºá
á€áá±áá¬ááœáẠá¡áááá¡áá»ááºááŸá¬ áá»áœááºá¯ááºááá¯á·á áááá¯ááááºáá¬áá»á¬áž (á¡áá®ážá ááºáá¯á¶áž:
Googlers áá»á¬áž ) áá¯áá±áá®áá»á¬áž ááá¯ááºáá«á á ááºážáááºážá¡áá áá°ááá¯á·áᬠáááºáááºááááºážá Java ááá¯áá±á·áá¬ááŒá®áž C/C++ áá«ááŸááá¯áẠPython ááá¯áá±á·áá¬áá¬ááŒá áºááá¯ááºáá«áááºá áá°ááá¯á·ááẠáá±á¬ááºážááœááºáá±á¬áá¬áá¬á áá¬ážááᯠáá¬ážááááºááá¯ááºáá±á¬áºáááºáž áá áºáá»áááºáááºážááœáẠáááºážááá¯á·á¡á¬áž áá±á¬á·ááºáá²ááºáá±á¬ááºážáá»á¬áž áááºáá®ážáá±ážá á±ááá¯áá«áááºá áá«ááŒá±á¬áá·áº áá°ááá¯á·áá²á·áá¬áá¬á áá¬ážáᬠáá°ááá¯á·áá¬ážáááºááœááºá¡á±á¬áẠáááºáá°ááá·áºáááºá
á¡ááŒááºážáá»ááºážá¡á¬ážááŒáá·áº C ááŸáá·áº áááºážááŸá®ážáá°ááŒá áºááááºá Google ááœáẠá¡áá¯ááºáá¯ááºáá±á¬ áááá¯ááááºáá¬áá»á¬ážááẠáááºážááá¯á·á á¡áááºááœá±ážáááºážááŒá±á¬ááºážáá¯ááºáááºážááᯠá¡á á±á¬ááá¯ááºážááœáẠá áááºááŒááŒá®áž á¡áá»á¬ážá á¯ááŸá¬ á¡áá°ážáááŒáá·áº C áááá¬ážá á¯ááŸáá·áº áá¯ááºáá¯á¶ážáá¯ááºáááºážáá¬áá¬á áá¬ážáá»á¬ážááŸáá·áº áááºážááŸá®ážááŒáááºá áááá¯ááááºážáááºážáá¬áá¬á áá¬ážá¡áá áºááœáẠáá»ááºááŒááºáá±á¬áá¯ááºáá¯ááºá áœááºážá¡á¬ážá¡ááœáẠááá¯á¡ááºáá»ááºááŸá¬ áá¬áá¬á áá¬ážááẠá¡ááœááºá¡á áœááºážáá±á¬ááºááŸá¯áááŒá áºááá·áºáᯠááá¯ááá¯áááºá
áá¬áá²? áá«ááŒá±á¬áá·áº Rob Pike á Google ááŸá¬ááŸááá²á· developer ááœá±á ááááºááá±á¬ááºážáá°ážááá¯á· á¡ááŒá±áá¶á¡á¬ážááŒáá·áº ááŒá±á¬áá±áá¬áá«á áá«ááŒá±á¬áá·áº áá°ááá¯á·á idiots á¡ááœáẠáá¬áá¬á áá¬ážááᯠáááºáá®ážáá²á·áá¬áá« (á¡áá®ážá ááºáá¯á¶áž: dumbed down) áá«á០áá°ááá¯á· áá áºáá¯áᯠáá¯ááºááá¯ááºááŸá¬áá«á áááºážáá²á· áá¯ááºáá±á¬áºááá¯ááºáááºááœá±ááᯠáááºááᯠáá¬áááŒá®ážááá² ? Google á developer áá»á¬ážááẠááá¹áá¬áá±á«áºááœáẠá¡áá±á¬ááºááá¯á¶ážááŸáá·áº á¡áá±á¬ááºážáá¯á¶ážáá»á¬ážáá²á០ááœá±ážáá»ááºáá¶ááááºáᯠá¡ááŒá²áá¯á¶ááŒááºáá²á·áááºá ááá¯áááºáá²áá²á·á¡áá¬ááᯠááá¯ááºááœááºááá¯ááºááŸá¬ áá±áá»á¬áá«áááºá
á¡ááœááºá¡áá»áœá¶ááá¯ážááŸááºážááŸá¯áááŸá±ážáá±á¬ááºážáá á¹á ááºáž
ááá¯ážááŸááºážááŒááºážááẠáááºááá·áºáá®ááá¯ááºážááœááºáááᯠááá¯ááºáááºáá±á¬áááºážááá¯ááºáá áºáá¯ááŒá áºááŒá®áž ááá¯ážááŸááºážáá±á¬á¡áá¬áá áºáá¯ááᯠáááºáá®ážáááºááŒáá¯ážá á¬ážááŒááºážááẠáááºáá²áááºá ááá¯á·áá±á¬áºá ááŸá¯ááºááœá±ážáá±á¬ááŒá¿áá¬áá»á¬ážááá¯ááŒá±ááŸááºážáááºááŒáá¯ážá á¬ážáá±á¬á¡áá«á áá áºáá«áá áºáá¶ááœááºááŸá¯ááºááœá±ážáá±á¬áááááá¬áá áºáá¯ááá¯á¡ááºáááºá ááŸá¯ááºááœá±ážááŸá¯ááŸáá·áº ááŸá¯ááºááœá±ážááŸá¯ááá¯á·ááẠáááá¯ááááºážáááºážáá¬áá¬á áá¬ážá á¡áá±á¬ááºážáá¯á¶ážá¡ááºá¹áá«áááºáá»á¬ážááá¯ááºáá±á¬áºáááºáž áá¬áá¬á áá¬ážáá¬ážáááºáááºááŸáá·áº á¡áá¯á¶ážááŒá¯áááœááºáá°ááá·áº ááŒá±ááŒá áºáá±á¬ abstraction áá»á¬ážááᯠáááºáá®ážááá¯ááºááá·áº á¡áááºá¡áááºá¡áá»ááºáá áºáá¯ááŸááááºá
ááááºááŒá®áž áá¯ááºáá±á¬áºáááŒáááºáá°ážá
ááá¯ážááŸááºážááŸá¯á¡áá±á«áº áááºážááááááááºááŒá±á¬áá·áº Go ááẠá¡ááŒá¬ážáá¬áá¬á áá¬ážáá»á¬ážááœáẠááá¬ááᯠáááºááŒááºááá·áº áááºáá±á¬ááºááŸá¯áá»á¬áž áááºážáá²á·áá±áááºá áááºážááẠá¡á ááá¯ááºážááœáẠáá±á¬ááºážááœááºáá±á¬ á¡ááŒá¶áá áºáá¯áᯠáááºááá±á¬áºáááºáž áááºááœá±á·ááœáẠáááºážááẠverbose code ááᯠááŒá áºáá±á«áºá á±áá«áááºá á€á¡áá¬á¡ááœáẠá¡ááŒá±á¬ááºážáááºážááŸá¬ áááºááŸá¬ážááá·áºááẠ- developer áá»á¬ážááẠá¡ááŒá¬ážáá°áá»á¬ážááá¯ááºááᯠáááºááẠááœááºáá°ááẠááá¯á¡ááºáá±á¬áºáááºáž á¡ááŸááºááááºááœáẠá¡ááá¯áá«ááá¯ážááŸááºážááŸá¯áá»á¬ážááẠáááºááá¯ááºááŸá¯ááá¯áᬠááááá¯ááºá á±áá«áááºá Go ááœáẠá¡ááá¯áá±á¬ááºáá»á¬áž áááŸááá«á á¡áá»á¬ážááŒá®áž ááá¯á·ááá¯áẠáá¬á០áááŸááá«á
á¥ááá¬á¡á¬ážááŒáá·áºá stdin ááá¯áááºáá±á¬ console utility ááá¯á·ááá¯áẠcommand line arguments ááŸááá¯ááºáá áºáá¯áááºá€áá²á·ááá¯á·áá¯á¶ááááº-
package main
import (
"bufio"
"flag"
"fmt"
"log"
"os"
)
func main() {
flag.Parse()
flags := flag.Args()
var text string
var scanner *bufio.Scanner
var err error
if len(flags) > 0 {
file, err := os.Open(flags[0])
if err != nil {
log.Fatal(err)
}
scanner = bufio.NewScanner(file)
} else {
scanner = bufio.NewScanner(os.Stdin)
}
for scanner.Scan() {
text += scanner.Text()
}
err = scanner.Err()
if err != nil {
log.Fatal(err)
}
fmt.Println(text)
}
á€áá¯ááºááẠáááºááá¯ááºááá»áŸ áá±áá°áá»ááŒá áºááẠááŒáá¯ážáááºážáá±á¬áºáááºáž Go á á¡áááºážá¡áá»áẠá áá¬ážááŒááºážááẠáááºážááŒá±á¬ááºážáá±á«áº áá±á¬ááºááœá¬ážááŒá®áž ááááºá¡áá±ááŒáá·áº ááá¯ážááŸááºážáá±á¬ ááŒá¿áá¬ááᯠááŒá±ááŸááºážááŒááºážááŒáá·áº áá¯ááºá¡áá»á¬ážá¡ááŒá¬ážááᯠááŒá áºáá±á«áºá á±áá«áááºá
á€ááœáẠá¥ááá¬á¡á¬ážááŒáá·áº áá°áá®áá±á¬ááŒá¿áá¬á¡ááœáẠá¡ááŒá±áá
áºáá¯ááŒá
áºáááºá
import std.stdio, std.array, std.conv;
void main(string[] args)
{
try
{
auto source = args.length > 1 ? File(args[1], "r") : stdin;
auto text = source.byLine.join.to!(string);
writeln(text);
}
catch (Exception ex)
{
writeln(ex.msg);
}
}
á¡áᯠáááºáá°á ááá¯áááºááá¯á·áá²á D ááá¯áá²áá±ážáááºá áá°á·áá¯ááºá áá¯ááºáá±á¬ááºáá»ááºááœá±ááᯠááá¯ááŸááºážááŸááºážáááºážáááºáž áá±á¬áºááŒáá²á·á¡ááœáẠááá¯ááŒá®ážáááºááá¯á·ááááºá D ááẠááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬ ááá±á¬ááá¬ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠ(á¡áá®ážá
ááºáá¯á¶áž:
áá°ážáá°ááŒááºážááá²
Go ááᯠááá¯ážáááºá á±ááŒááºážá¡ááœáẠáá±áááºážá á¬ážáá±á¬ á¡ááŒá¶ááŒá¯áá»ááºááŸá¬ áá±áá¯áá»ááá±á¬ááŒá áºáááºá áááºážááẠáá±áá¬á¡áá»áá¯ážá¡á á¬ážá¡á¬ážáá¯á¶ážááᯠáá¶á·ááá¯ážáááºá¡ááœáẠáááá¯á¡ááºáá² áá¯ááºáá°ážáá°ááŒááºážááᯠááŸá±á¬ááºááŸá¬ážááẠá¡áááºážáá¯á¶áž áá°áá®áá±ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááááºážááŒáá·áºáá»á¬ážá á¬áááºážááᯠáá±á«ááºážáá»á¯ááºáááºá¡ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá áºáá¯ááᯠááááºážááŒáá·áºá¡áá»áá¯ážá¡á á¬ážáá áºáá¯á á®á¡ááœáẠáááºážáá¡ááŒá±áá¶áá¯ááºáá±á¬ááºáá»ááºááᯠáá°ážáá°ááŒá®áž áá°ážááá·áºááŒááºážááŸááœá²á á¡ááŒá¬ážáááºážáááºážááŒáá·áº á¡áá±á¬ááºá¡áááºááá±á¬áºááá¯ááºáá«á á¡ááŒá¬ážáááºážáááºážáááŸááá«á
package main
import "fmt"
func int64Sum(list []int64) (uint64) {
var result int64 = 0
for x := 0; x < len(list); x++ {
result += list[x]
}
return uint64(result)
}
func int32Sum(list []int32) (uint64) {
var result int32 = 0
for x := 0; x < len(list); x++ {
result += list[x]
}
return uint64(result)
}
func int16Sum(list []int16) (uint64) {
var result int16 = 0
for x := 0; x < len(list); x++ {
result += list[x]
}
return uint64(result)
}
func int8Sum(list []int8) (uint64) {
var result int8 = 0
for x := 0; x < len(list); x++ {
result += list[x]
}
return uint64(result)
}
func main() {
list8 := []int8 {1, 2, 3, 4, 5}
list16 := []int16{1, 2, 3, 4, 5}
list32 := []int32{1, 2, 3, 4, 5}
list64 := []int64{1, 2, 3, 4, 5}
fmt.Println(int8Sum(list8))
fmt.Println(int16Sum(list16))
fmt.Println(int32Sum(list32))
fmt.Println(int64Sum(list64))
}
ááŒá®ážáá±á¬á· áá®á¥ááá¬á áááºááŸááºááá¯ážáá¬ážáá²á· á¡áá»áá¯ážá¡á
á¬ážááœá±á¡ááœááºáá±á¬áẠá¡áá¯ááºáááŒá
áºáá«áá°ážá á€áááºážáááºážááẠááá·áºááá¯ááºááẠáááºáá«ááá²áá²ááá¯ááºááŒááºážáááá¬áááᯠáá¯á¶ážááá»áá¯ážáá±á¬ááºááẠ(
D ááœáẠá¡áá¬ážáá° á¥ááá¬
import std.stdio;
import std.algorithm;
void main(string[] args)
{
[1, 2, 3, 4, 5].reduce!((a, b) => a + b).writeln;
}
ááá¯ážááá¯ážááŸááºážááŸááºážá á¡á¶áááºááœááºáá»áá²á· ááŒá±á¬áá·áºááŒá±á¬áá·áºááŒá®ážáá«áá²á áá®ááŸá¬áá¯á¶ážáá²á· function á reduce
template á¡áá»áá¯ážá¡á
á¬ážááŸáá·áº predicate á¡ááœááºá áá¯ááºáááºá áá«á Go áá¬ážááŸááºážááẠááá¯ááŸá¯ááºááœá±ážáá«áááºá áá«áá±ááá·áº smart programmer ááœá±á¡ááœááºáá±á¬á· áá¬ážáááºááá¯á· ááááºááááºáá«áá°ážá áááºá¥ááá¬á ááááºážááááºážá ááá¯ááœááºááŒá®áž áááºá ááá¯ááœááºáá²á
ááá¯ážááŸááºážáá±á¬á¡áá»áá¯ážá¡á á¬ážá áá áºááŸá±á¬ááºááœááºáž
Go áááá¯ááááºáá¬áá»á¬ážááẠá€á á¬ááá¯áááºáá±ááá·áºá¡ááœáẠáá«ážá ááºááŸá¬ ááœááºááœááºáá°áá±ááŒá®áž "áááºážáá¯ááºáá¬ááŸá¬ážáá±ááŒá®!" áá±á¬ááºážááŒá®á áá±áá¯áá»áá¯ááºáá±á¬ááºáá»ááºááŸáá·áº á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŒá¯áá¯ááºááẠá¡ááŒá¬ážáááºážáááºážáá áºáá¯ááŸááá«áááºá ááá¯á·áá±á¬áº áááºážááẠá¡áá»áá¯ážá¡á á¬ážá áá áºá¡á¬áž áá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž áá»áá¯ážáá»ááºááœá¬ážáá«áááºá
ááŒá¿áá¬ááá¯ááŒá±ááŸááºážááẠááá¯ááºáá²áá±á¬áá¬áá¬á áá¬ážááŒááºáááºááŸá¯á á€á¥ááá¬ááá¯ááŒáá·áºáá«-
package main
import "fmt"
import "reflect"
func Reduce(in interface{}, memo interface{}, fn func(interface{}, interface{}) interface{}) interface{} {
val := reflect.ValueOf(in)
for i := 0; i < val.Len(); i++ {
memo = fn(val.Index(i).Interface(), memo)
}
return memo
}
func main() {
list := []int{1, 2, 3, 4, 5}
result := Reduce(list, 0, func(val interface{}, memo interface{}) interface{} {
return memo.(int) + val.(int)
})
fmt.Println(result)
}
áá«ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá Reduce
áá±á¬ááºážáá«ážá០áá»á±ážáá°áá²á·áááºá interface{}
- á
á¬ááá¯ááºááŒááºážááᯠááŸá±á¬ááºááœááºážáááºáᬠááá¯á¡ááºááŒá®ážá áááºážááẠá¡áá»ááºážááŸá®ážáá±á¬ á¡ááºáá¬áá±á·á
áºáá
áºáá¯ááŒá
áºááŒá®áž á¡áá»áá¯ážá¡á
á¬ážá¡á¬ážáá¯á¶ážááẠáááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáᬠáá°ááá¯ááºážá¡ááœáẠááŒá®ážááŒáá·áºá
á¯á¶áá±á¬ ááœááºáááºááŸá¯ááᯠááœáá·áºááŒá¯áááºá á€á¡á
á®á¡á
ááºááá¯á¶á
á¶ááẠá¡ááœááºáá¯ááºááá¯ážáááºá áá«á¡á¬ážáá¯á¶ážááá¯ááºáá±á á€áá²á·ááá¯á·áá±á¬ Acrobatic á
áœááºážáá±á¬ááºááŸá¯áá»á¬ážááẠruntime áá±á¬ááºááŒááºáááºááŸá¯ááá¯á¡áá¯á¶ážááŒá¯áááºááá¯á¡ááºáááºá Rob Pike ááẠáááºážá á¡á
á®áááºáá¶á
á¬áá
áºáá¯ááœáẠáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºáž áááºážááᯠá¡ááœá²áá¯á¶ážá
á¬ážáá¯ááºáá°áá»á¬ážááá¯ááẠáááŒáá¯ááºáá±á
áááºážááẠá¡á áœááºážáááºáá±á¬áááááá¬ááŒá áºááŒá®áž áááááŒáá·áºá¡áá¯á¶ážááŒá¯ááá·áºáááºá áááá¯á¡ááºáá² ááŸá±á¬ááºááŒááºááá·áºáá«áááºá
áá®ááᯠá¡áááá¹áá«ááºáá²á·ááá·áºá¡á
á¬áž D template ááœá±ááᯠáá°áá»ááºáá«áááºá áá«ááᯠáááºáá°á áááºááá¯ááŒá±á¬ááá²á interface{}
ááá¯áááºááá¯á·áááẠáá«ááŸááá¯áẠáá¯á¶ááŒá¯á¶á¡á±á¬áẠááá¯ááºááá·áºááá¬ážá
ááŸá®ááá¯ááŸá¯á á®áá¶ááá·áºááœá²ááŸá¯ááá¯áá¹ááá»á¬áž
Go ááœáẠáá°ááŒáá¯ááºáá»á¬ážáá±á¬ hosting áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážáááááºááœáẠáááºáá±á¬ááºáá¬ážááá·áº built-in ááŸá®ááá¯ááŸá¯á
áá
áºáá
áºáá¯ááŸááááºá
á€ááŒá¿áá¬á¡ááœáẠá¡ááŒá±áá
áºáá¯á¡ááŒá±á¬ááºáž áá±ážááœááºážáá»á¬ážáá±ážááŒá®ážáá±á¬áẠGo ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážá¡ááœá²á·á áááºáá®ážáá²á·áááºá
ááŸá®á០áááºáá»á±ážááŸá¯á¡áááº
áá»áœááºáá±á¬á·áºá¡ááŒááºá¡ááá±á¬á· Go ááᯠáá
áºáááºáá¯á¶áž C áá¯á¶ážáá°ážáá°ááœá±áá²á· á¡áá
áºá¡áááºážááœá±ááᯠáá
ááºážáá»ááºáá²á·áá°ááœá±á áááºáá®ážáá²á·áá¬áá«á áá¬áá¬á
áá¬ážááᯠá¡ááá¯áá®ážáá»á¬ážááŒáá·áº C á¡ááŒá
áºáá±á¬áºááŒááá¯ááºáááº(orig:
áá±á¬ááºááẠááááºááá·áºá áá¬ááŒá¿áá¬ááŸá¬ Go ááẠáá¯ááºáá¯á¶ážáá¯ááºáááºážáá¬áá¬á áá¬áž (C á á¡áá¶ááááºááááºááá·áºá áá¬áá²á·ááá¯á·) ááŒá áºáááºá ááŸá±ážááá¯ážáááºááŒá®áž áá±ááºááá®áááá¯áá¶á á¬ážááá±á¬ áá¯ááºáá¯á¶ážáá¯ááºáááºážáá¯á¶á á¶ááŒáá·áº áá¯ááºáá±ážááŒááºážááᯠá¡áá¯á¶ážáááºáá«áááºá Object Oriented Programming ááẠááœá±áá±á¬ááºáá»ááºáááºááá¯ááºááŒá±á¬ááºáž áááá«áááºá ááá¯á·áá±á¬áº á¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠá¡áá»áá¯ážá¡á á¬ážáá»á¬ážá¡ááŒá Ạabstract áá¯ááºááŒá®áž encapsulation áá±ážá áœááºážááá¯ááºááŒááºážááẠáá±á¬ááºážáá«áááºá
ááá¯áá·áºá¡áá»áá¯ážá¡ááœáẠááá¯ážááŸááºážáááºá
Go ááᯠááá¯ážááŸááºážá á±ááẠáá®ááá¯ááºážáá¯ááºáá¬ážááŒá®áž ááá¯áááºážááá¯ááºááœáẠá¡á±á¬ááºááŒááºáááºá á¡á¬ážáááºážáá±á¬ áááá¯ááááºáá¬áá»á¬ážá¡ááœáẠáááºážáááááºá¡ááŒá Ạáá¬áá¬á áá¬ážáá±á¬ááºážááᯠá¡áá¯á¶ážááŒá¯á áá±ážáá¬ážáá¬ážáááºá áááºážááẠááá¯ážááŸááºážáá±á¬á¡áá¬áá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠááá¯ážááŸááºážáá±á¬áááááá¬áá»á¬ážááŒáá·áº á¡ááŒáá·áºá¡á á¯á¶áá«ááŸááááºá áááºážáááºáááºáááºááœááºáá°ááŒá®ážá¡áá¯á¶ážááŒá¯áááœááºáá°áááºá
áááºážááẠá áááºáá»áá±á¬ áááá¯ááááºáá¬áá»á¬ážá¡ááœáẠá¡ááœááºá¡ááá¯ááºá á¬ážá á¡áááºááŒá®ážáá±á¬ááºá áá¬ááŸáá·áº ááá±á¬ááºážáá«á
СпаÑОбП
source: www.habr.com