αααα»αααααααααα»ααααΆααααααααααααα αααα»αααΆαααααΎααααΆαα Go αααααΆααααΆαα’αα»ααααα
αα ααΆαααααΆααα’αααααααααααααα·ααΈααααα?
Go ααΊααΆααααα½ααααααΆαα ααΆααααα½αααΆαααααααΆαααααΆαααΆαααΆααααα»ααα
ααααΆα
αα½α αααααΆαααααααα»αα’αΆα
αααααααΌαααΆααααΆαααΆαααααα·αααααΆαα ααααα
ααααααα»αααααΆααααα Go ααααΌαααΆαααα α
ααΆ
Google α’αα’αΆαααΆααΆαααΆαααααααα Go ααΊααΆα ααα»α αααααααααΆ α αΎαααΆααΆαααααααΌαααΆααα ααΆα‘αΎααααααΆααααα·αααΆαα’αα·ααααΆαα αααα»ααααα»ααα ααα»αααααααα»αααααααααΆα ααΆααααααααα·ααααααααΆαα α¬αααα’α·αα α½αα ααα»α α αΎαααΆααα’αααααααΆαααααααααΆαααΏαα»αα α·αααααΎα’αααα’αα·αααααα ααΆαα½αααΉαααΆαααααααααΆαα½ααααα·αα’αΆα ααααΎα’αααΈααΆαααααΉαααααΌαα ααααααααΆααααΆαααααΆααααΆαααΆαααααααααΊααΆααΆααααααα α α·αααααααααα·ααΆαααααα’ααααα ααΆααΆααΆ α αΎαααΎααααΈαααα αααΆααααΈααΌαα ααα»αααααΆααααΌαααΆα ααΎαααααΌααααααΈααΆαααΎαααΉαα α·αααααααα’αααα’αα·αααααα αα·αα’αααΈααααα½ααααααα»αααααΆααΆααααααα ααΆααα αααα»α Go α
ααΌα
ααααα ααα»α’αααΈααΆαααΆααΆααααΌαααΆαααααΎα±ααααΆααααααΌα
αααα? αααααΊααΆααααααααΈαααΈ
α ααα»α ααααΆαααα ααΈαααααΊααΆα’αααααααααααααα·ααΈααααααΎα (αααα αα:
Googlers ) αα·ααααααΆα’αααααααΆαααααΆαααα ααΆααααα½ααα½α αα½ααααα αααααααΆαα ααααααΎααααααΆααααΈαα·ααααΆ αααα ααααΆαα½αααααΆααα·ααααΆ Java α¬ C/C++ α¬ Python α αα½αααβαα·αβα’αΆα βαααβααΆααΆβααβα’ααα αΆαααβαα½αβαααβαα ααα»ααααβαααα»αβαααβααΆαα½αβααααΆβααα ααΎαβα ααβα±ααβαα½αααβαααααΎαβαααααα·ααΈβααα’βα αααα αΎαααΆααΌαα ααα»αααααΆααΆαααααα½ααααα½αααααΆααααα½ααααααΆαααα½ααααααα»αααΆαααα αα·ααααα
ααΆααβαα½αβααβααααΆααβαααα ααβαα·ααΆαβααααααβααΉα C. α’αααααααααααααα·ααΈαααααααΎααΆααα Google α αΆααααααΎαα’αΆααΈαααααΌααααααα½ααα α αΎαααΆαα αααΎαααααΆααααΆααΆααΈαα·αα·ααΈ ααΆαα·ααααααα½ααΆα C α αααααΌαααΆααααααΆααααα·αααΆααα αααααα»αααΆααΆααααααααααα·ααΈααααΈααΆααααααΆ ααΆααΆαα·ααα½αααΆααααααααααΆααΈααΆαααααααα
α’αααΈ? ααΌα αααα Rob Pike αα·ααΆαααΆααΌαααααΆαααΆα’αααα’αα·αααααααα Google αα·αααα’αα αααα αΎαααΆααΌαα ααα»ααααα½ααααααααΎαααΆααΆαααααΆααααα»αααααααα (αααα αα: dumbed down) ααΎααααΈα±αααα½αααα’αΆα ααααΎα’αααΈαα½αααΆαα ααΎαβαα·αααβαα½αβααΆαααΆαβαααα½αβα―αβαααα’αΊααααααβαααβααΆ? αααα»ααααααααΏααΆα’αααα’αα·αααααααααα Google ααααΌαααΆαααααΎαααΎααααα’αααααααΊαααα»α αα·αααα’αααα»ααα ααΎαααααΈα ααΎβαα½αβααβααααΆααβααΆβα’αΆα βαααααααΆαβα’αααΈβαααβαα·ααΆαβααΆαβαααβαα?
ααααα»αα»ααΆαααααΆαααΆααααα α½αα ααα»
ααΆαααΆααααααΊααΆααααα ααααααα·αααααα»αααΆααα ααΆααΆαα½α α αΎαααΆαααααΆααΆαααααΎα±ααα’αααΈαααααΆααααααΊαα·ααΆαααΆααα ααααααΆαααΆααααααα αααααααΆααΆααααααααΆααααα αΆαααα»αααααΆα (α¬ααΌααααΈαααααα αΆα) αα½αααΆαα§ααααααααα»αααααΆαααΊα αΆαααΆα αα ααΆααααα»αααααααΆα αα·αααΆααααα»αααααααΆααα·ααααααΆααααααααα’αααα»αααααΆααΆααααααααααα·ααΈααααα ααα»ααααααΆααΆαααΌαααααΆααααααΆααααααΆααΆα’αΆα αααααΎαα’ααΌααΈααααΎαααΆα αααααΆααααα½αααα αα·αααααΎααααΆααα
αα·ααααα ααααα·ααααΆαα
αααααΆαααααΆαααααααααΆα α·ααααααααααα½αα ααααααΆαααΆαααα Go ααααααΆαααααΆαααΆαααααααΌαααΆααααααααΆααΆααααααΆαα·αα αααα»αααΆααΆααααααααα αααβαααα ααβααΆβααΆβαααα·αβααα’βααααΌαβα‘αΎα ααα»ααααβαααα»αβααΆαβα’αα»ααααβααΆβααΆβααααααβααβααΆαβαααααβααΌαα α ααα»αααααααΆααααΏαααααα½αααα αααΆαα - ααΆααααΌαααΆαααΆαααΆααααα½ααααααΆααα’αααα’αα·αααααααααα»αααΆαα’αΆαααΌαααααα’αααααα ααα»ααααααΆααα·α ααΆαααΆααααααΆααααααααααΆααααααΆαα’αΆαααα»αααααα αα·αααΆαα’ααααααΆαααα αααα»α Go: α αααΎα α¬ααααΆαα’αααΈαααα
α§ααΆα ααα α§αααααααααΎααααΆαααα»αααΌααααα’αΆα stdin α¬α―αααΆαααΈα’αΆαα»ααααααααααΆααααΆααααααααΆααΉαααΎααα ααΌα αααα
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. ααΌαβααααβααΆααβααΊβα’αΆα
βα’αΆαβααΆαβα
αααΎαβααΆα αααααβααΆααβαααααΆβαααααααΆαβααΆααβααβα
αααΆααα α ααααΎαααα·ααααα»αααααααΆαα
αααΎα (αααα αα:
αααααααΆαα αααα
ααΆαααααΆαααααααα·αααα½ααααααΆααααΆααααααα’ 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;
}
ααΆαααα ααΎαααΆα αα·αααααααα
α
ααα»α
α αα»αααΆααααααααΎαα
ααΈαααααΊ reduce
αααααΆααααααααααααΌ αα·αααααΆααααα ααΆα αααβααΊβααΆβααΆαβαααα»αααααΆαβααααβαααβααΆαβαααα Go ααα»ααααβαα·αβαα·ααΆαβαααααΆααβα’αααβαααααβαααααα·ααΈβααααΆαααβαααα»αβααΆαβαααβαααβααα ααΎβα§ααΆα αααβαα½αβααΆβαααβααΆαβαααα½αβαααα»αβααΆαβαααααΆ αα·αβααΆαβα’αΆα?
ααααααααααααΌαααΆαααααααααΆαααα
αααα»ααααααααΆα’αααααααααααααα·ααΈ 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{}
- farce α αΎααα
αααα»αααΆααΆααΆααααΌαααΆαααααΎααααΈααααααΆαααΆαα αααααΊααΆα
ααα»α
αααααΆααααα α αΎααααααααααααα’αα»ααααααΆ αααα’αα»ααααΆαα±ααααΆαααααΈααΆααααααααααααΆααααα»ααααααααααααΆα αα
ααΆααααααααααααα·ααΈαααααΊα’αΆαααααααΆαα α αΎαααααα·ααααααΆααα’αααααααα αααααααΆαααΆααααααααααααααααααααΌαα±ααααααΎααΆααααα»ααααα
αΆααααααααα ααΌααααΈαα Rob Pike αα·αα
αΌαα
α·ααααα»αααααααααααΆαααΎααΏαααα ααΌα
αααααΆααααΆαααΎαα‘αΎααα
αααα»ααααΆαααΆααααα½αααααααΆααα
αααααΊααΆα§αααααααααΆαα₯αααα·ααααααα½αααααΎααααααα»αααααααααα ααΆαα½αααααααΌαααΆααααααΆααα»αααααΆααα αΆαααΆα αα
αααα»αααΉαααααααΌ D αααα½αα±ααααΆαααα ααα»αααααααα ααΎβα’αααβααΆβα’αΆα
βαα·ααΆαβαααβαααβαααβααααβααΆ interface{}
α’αΆα
βα’αΆαβααΆαβα
αααΎαβααΆα α¬βααΌααααΈβααβααΆαβαααβαα»ααααα·ααΆα?
αα·ααααα·ααααΆααααααααααααΆαα’αΆααααα
Go ααΆαααααααααααΉαααα’αααααααααΆααααααΆαα½ααααααααΌαααΆααααααΎαα‘αΎααα
ααΎααααΌαααα’ααααααααααααΆαααα ααααααα·αα
αααααΆααααΈαα½ααααα½αα’αααΈαααααααααΆαα
αααααααα αΆααα αααα»αα’αα·αααααα Go ααΆααααααΎα
α₯αααΆαααααααααααΈαααΈ
ααΆααααα·ααααααααα»α Go ααααΌαααΆααααααΎαα‘αΎααααα’ααααααααΆαααααΎ C ααααα½αααΈαα·ααααααα½ααα αα·ααααα’αααααααα·αα
ααααΆαααααα’αααΈαααααααΈα ααΆααΆα’αΆα
ααααΌαααΆααα·αααααΆααΆααΆ C ααΆαα½αααΉαααααααααα (ααΎαα:
αααα αΆαααα½αα±ααααααΆααααα’αΎααα½ααααααΊααΆ Go ααΊααΆααΆααΆααΈαα·αα·ααΈ (ααΌα ααΆααΆααααααααααααααΆαααααα C) α α’ααααααα ααααΆααααααααΌααααα»ααα ααΆαααααααΈαα·αα·ααΈαααααΆαα’αΆααααααααΆα αΆαα αα·αα α½αααααα αααα»αααΉαααΆαααααα·ααΈαααααααα·αααααα»αα·ααααααΆααααΆααααΆαααααΎααα ααα»ααααααΆααΆααΆααααααΎαααΆαααααα»αααΆαα’αΆα ααααααααααααΆααααα’α·ααα ααΆαααααα αα·ααααααααΌαααΆαααα ααα ααα
ααΆαααΆαααααααααΆααααααααααααααααΆαααααα½αααααα’αααα
Go ααααΌαβααΆαβαα ααΆβα‘αΎαβα±ααβααΆαααα α αΎαβααΆβααα½αβααΆαβααααααβααΆαβααααα βαααα ααΆααααΌαααΆαααααααααααΆααα’αααααααααααααα·ααΈααααα αααααααΎααΆααΆα αΆααααΆααααΌα ααΆααααΆααααααΆαα½αααΌαα§αααααααΆαααααααΎααααΈααααΎααΏαααΆαααααα ααΆααΆααααα½αα’αΆα αα·αααΆααααα½αααααΎα
ααΆβααΆβααΆαααβααααΈβαα·αβαα½αα±ααβα αΆααα’αΆαααααα αα·αβα’αΆαααααβαααα»αβαααααΆααβα’ααααααααβαααααα·ααΈβααααΆαααα
ααααααΈα
ααααα: www.habr.com