Ezinyangeni ezedlule bengisebenzisa i-Go ukuze ngiyisebenzise.
Idizayinelwe abahleli bezinhlelo ababuthakathaka?
I-Go kulula kakhulu ukuyifunda, kulula kangangokuthi isingeniso sangithatha ngobunye kusihlwa, ngemva kwalokho ngase ngikwazi ukubhala amakhodi ngendlela ephumelelayo. Incwadi engangiyifundela Go
I-Google ithi ubulula be-Go yindawo yayo yokuthengisa futhi ulimi lwakhelwe ukukhiqiza okuphezulu emaqenjini amakhulu, kodwa ngiyakungabaza. Kukhona izici ezingekho noma ezinemininingwane ngokweqile. Futhi konke ngenxa yokuntuleka kokwethemba konjiniyela, ngomcabango wokuthi abakwazi ukwenza noma yini efanele. Lesi sifiso sokwenza izinto zibe lula kwaba yisinqumo esihlakaniphile sabaklami bolimi, futhi ukuze siqonde ngokugcwele ukuthi kungani sasidingeka, kufanele siqonde ukugqugquzelwa konjiniyela kanye nalokho ababezama ukukufeza ku-Go.
Pho kungani yenziwa yalula kangaka? Nazi izingcaphuno ezimbalwa
Iphuzu elibalulekile lapha ukuthi abahleli bethu (cishe.:
Abasebenzisa iGoogle ) ababona abacwaningi. Njengomthetho, bancane kakhulu, beza kithi ngemva kokufunda, mhlawumbe bafunde i-Java, noma i-C / C ++, noma i-Python. Abakwazi ukuqonda ulimi olukhulu, kodwa ngesikhathi esifanayo sifuna ukuthi bakhe isofthiwe enhle. Yingakho ulimi lwabo kufanele lube lula kubo ukuluqonda nokufunda.
Kufanele ajwayele, acishe afane noC. Abahleli bezinhlelo abasebenza kwa-Google baqala imisebenzi yabo kusenesikhathi futhi bajwayelene kakhulu nezilimi zenqubo, ikakhulukazi umndeni wakwa-C. Isidingo sokukhiqiza okusheshayo olimini olusha lokuhlela sisho ukuthi ulimi akumele lube lukhuni kakhulu.
Ini? Ngakho-ke uRob Pike empeleni uthi abathuthukisi bakwaGoogle abalungile kangako, yingakho bedale ulimi lwezilima (cishe.: dumbe phansi) ukuze bakwazi ukwenza okuthile. Hlobo luni lokuzikhukhumeza kozakwenu? Bengihlala ngikholelwa ukuthi onjiniyela be-Google bakhethwe ngesandla kwabakhanya kakhulu nabahamba phambili eMhlabeni. Ngokuqinisekile bangakwazi ukusingatha okuthile okunzima kakhulu?
Izinto zobuciko ezilula ngokweqile
Ukuba lula kuwumgomo ofanelekayo kunoma yimuphi umklamo, futhi ukuzama ukwenza into elula kunzima. Kodwa-ke, lapho uzama ukuxazulula (noma ngisho nokuveza) izinkinga eziyinkimbinkimbi, ngezinye izikhathi ithuluzi eliyinkimbinkimbi liyadingeka. Ukuxaka nokuxaka akuzona izici ezingcono kakhulu zolimi lokuhlela, kodwa kunendawo emaphakathi lapho ulimi lungakha izifinyezo ezinhle okulula ukuzifunda nokuzisebenzisa.
Ayivezi kakhulu
Ngenxa yokuzibophezela kwayo ekwenzeni lula, i-Go ayinazo izakhiwo ezithathwa njengezendalo kwezinye izilimi. Lokhu kungase kubonakale kuwumqondo omuhle ekuqaleni, kodwa ekusebenzeni kubangela ikhodi ye-verbose. Isizathu salokhu kufanele sibe sobala - kudingeka kube lula konjiniyela ukuthi bafunde ikhodi yabanye abantu, kodwa empeleni lezi zindlela ezilula zilimaza kuphela ukufunda. Azikho izifinyezo ku-Go: kuningi noma lutho.
Isibonelo, insiza ye-console efunda i-stdin noma ifayela elisuka ku-agumenti yomugqa womyalo ingabukeka kanje:
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)
}
Nakuba le khodi iphinde izame ukuba okuvamile ngangokunokwenzeka, i-verbosity ephoqelelwe ye-Go ingena endleleni, futhi ngenxa yalokho, ukuxazulula inkinga elula kubangela inani elikhulu lekhodi.
Lapha, isibonelo, isisombululo senkinga efanayo ku
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);
}
}
Futhi ubani ofundeka kakhulu manje? Ngizonikeza u-D ivoti lami. Ikhodi yakhe ifundeka kakhulu ngoba uchaza izenzo ngokucacile. D isebenzisa imiqondo eyinkimbinkimbi kakhulu (cishe.:
Isihogo sokukopisha
Isiphakamiso esidumile sokuthuthukisa i-Go sijwayelekile. Lokhu kuzosiza okungenani ukugwema ukukopishwa okungadingekile kwekhodi ukusekela zonke izinhlobo zedatha. Isibonelo, umsebenzi wokufingqa uhlu lwamanani aphelele ungenziwa ngenye indlela ngaphandle kokukopisha-unamathisele umsebenzi wawo oyisisekelo ohlotsheni lwenombolo ngayinye; ayikho enye indlela:
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))
}
Futhi lesi sibonelo asisebenzi nasezinhlotsheni ezisayiniwe. Le ndlela yephula ngokuphelele umgomo wokungaziphindi (
Isibonelo esifanayo ku-D:
import std.stdio;
import std.algorithm;
void main(string[] args)
{
[1, 2, 3, 4, 5].reduce!((a, b) => a + b).writeln;
}
Simple, nenhle futhi iqonde iphuzu. Umsebenzi osetshenziswe lapha ngu reduce
ohlotsheni lwesifanekiso nesilandiso. Yebo, lokhu kuphinde kube nzima kakhulu kunenguqulo ye-Go, kodwa akunzima kangako ukuthi abahleli bohlelo abahlakaniphile bakuqonde. Isiphi isibonelo okulula ukusigcina futhi kulula ukusifunda?
Uhlobo olulula lokudlula uhlelo
Ngicabanga ukuthi abahleli bezinhlelo ze-Go befunda lokhu bazobe bekhihliza amagwebu bese bememeza, βUkwenza kabi!β Nokho, kukhona enye indlela yokwenza umsebenzi ojwayelekile kanye nezinhlobo, kodwa iphula ngokuphelele uhlelo lohlobo!
Bheka lesi sibonelo solimi oluwubuwula ukulungisa inkinga:
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)
}
Lokhu kuqaliswa Reduce
yayibolekiwe esihlokweni interface{}
- i-farce, futhi ngolimi iyadingeka kuphela ukudlula ukuthayipha. Lesi isixhumi esibonakalayo esingenalutho futhi zonke izinhlobo ziyakusebenzisa, okuvumela inkululeko ephelele yawo wonke umuntu. Lesi sitayela sokuhlela sibi kakhulu, futhi akugcini lapho. Imisebenzi ye-Acrobatic efana nalezi idinga ukusetshenziswa kokubonisa isikhathi sokusebenza. Ngisho noRob Pike akabathandi abantu abahlukumeza lokhu, njengoba esho kweminye yemibiko yakhe.
Leli ithuluzi elinamandla okufanele lisetshenziswe ngokuqapha. Kufanele kugwenywe ngaphandle uma kunesidingo.
Ngingathatha izifanekiso zika-D esikhundleni salo mbhedo. Umuntu angakusho kanjani lokho interface{}
efundeka kakhudlwana noma ngisho nohlobo oluphephile?
Izinkinga Zokuphathwa Kokuncika
I-Go inohlelo lokuncika olwakhelwe ngaphakathi olwakhelwe phezu kwabahlinzeki bokusingatha abadumile
Ngemva kokubuza imibuzo mayelana nesixazululo sale nkinga, ithimba lokuthuthukisa i-Go lidale
Imithwalo yamasiko evela kwa-Xi
Ngokubona kwami, i-Go yathuthukiswa abantu ababesebenzise u-C impilo yabo yonke kanye nalabo ababengafuni ukuzama into entsha. Ulimi lungachazwa ngokuthi C ngamasondo engeziwe(imvelaphi.:
Enye inkinga edala ukuthi i-Go iwulimi lwenqubo (njengokwesabeka okuthulile kwe-C). Ugcina ngokubhala ikhodi ngesitayela senqubo esizwakala siyisidala futhi siphelelwe yisikhathi. Ngiyazi ukuthi ukuhlela okugxile entweni akulona ichashazi elisiliva, kodwa kungaba kuhle ukukwazi ukukhipha imininingwane ibe izinhlobo nokuhlinzeka nge-encapsulation.
Ubulula ukuze kuzuze wena
I-Go yenzelwe ukuthi ibe lula futhi iphumelele kulowo mgomo. Yayibhalelwe abahleli bezinhlelo ababuthakathaka, besebenzisa ulimi oludala njengesifanekiso. Iza iphelele ngamathuluzi alula okwenza izinto ezilula. Kulula ukufunda futhi kulula ukuyisebenzisa.
Inezwi ngokwedlulele, ayihlaba umxhwele, futhi ayilungile kubahleli bezinhlelo abahlakaniphile.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
Source: www.habr.com