• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    BLAMIThe Go Programming Language - moderni programovaci jazyk

    Go is an open source programming environment that makes it easy to build simple, reliable, and efficient software.

    Pro vyhledavani clanku/blogu/informaci o Go v Google je potreba misto vyrazu "Go" pouzivat "Golang".

    Web:
    golang.org - ofic. www stranky projektu Go
    Go Playground - piskoviste na vyzkouseni Go
    blog.golang.org - ofic. blog projektu Go
    pkg.go.dev - vyhledavac knihoven a dokumentace
    Awesome Go - seznam oblibenych projektu, knihoven a blogu

    Literatura:
    The Way To Go: A Thorough Introduction To The Go Programming Language (Ivo Balbaert)
    Programming in Go: Creating Applications for the 21st Century (Developer's Library) (Mark Summerfield)

    Komunita:
    Slack Gophers - server pro uzivatele a skupiny okolo projektu v Go
    rozbalit záhlaví
    RAGNAROK
    RAGNAROK --- ---
    JOHNY_K:
    Super děkuji.
    JOHNY_K
    JOHNY_K --- ---
    package main
    
    import (
    	"fmt"
    	"strconv"
    )
    
    func factorial(x uint64) uint64 {
    	if x == 0 {
    		return 1
    	}
    	return x * factorial(x-1)
    }
    
    func main() {
    	var input string
    
    	for {
    		fmt.Print("Enter a number: ")
    		fmt.Scan(&input)
    
    		if input == "quit" {
    			break
    		}
    		i, err := strconv.ParseUint(input, 10, 64)
    		if err == nil {
    			fmt.Println(i, factorial(i))
    		} else {
    			fmt.Println("Invalid input", input)
    		}
    	}
    }
    
    JOHNY_K
    JOHNY_K --- ---
    RAGNAROK
    RAGNAROK --- ---
    Jde nejak elegantne udelat while loop? Je takove cviceni. Program by mel pocitat factorial a bud se zada cislo a vyplivne faktorial a nebo zadam "quit" a program by se mel ukoncit. Problem je ze input muze brat jen type uint. Takze kdyz dam quit tak to hodi error. Dole je program ktery se uknoci pri zadani 0, ale to neni uplne co chci.
    
    func factorial(x uint) uint {
    	if x == 0 {
    		return 1
    	}
    	return x * factorial(x-1)
    }
    
    func main() {
    	var input uint
    	input = 1
    	for input != 0 {
    		fmt.Print("Enter a number: ")
    		fmt.Scanf("%d", &input)
    		fmt.Println(input, factorial(input))
    	}
    }
    
    BLAMI
    BLAMI --- ---
    NYX: tyjo koukam na vendoring a to se zda byt presne tim, co hledam! Dekuju!
    NYX
    NYX --- ---
    BLAMI: neresi tohle vendoring? a na spravu zavislosti treba glide nebo nejaky ekvivalent.
    BLAMI
    BLAMI --- ---
    jak si bezne organizujete workspace? Ja jsem donedavna pouzival jednu velkou hromadu (v ne-go svete pracuju na vyvoji operacniho systemu, kterej je tak zaverzovanej, takze mi to necinilo problem...) Ale ted pracuju na dvou projektech s konfliktnimi zavislostmi (jina branch). Pouzivate vic "GOPATH workspaces" a prepinate GOPATH?
    CUCHULAIN
    CUCHULAIN --- ---
    Jak zprovoznit remote debugging Go aplikace ve Vagrantu z JetBrains (např. IDEA)? Povedlo se to někomu?
    CUCHULAIN
    CUCHULAIN --- ---
    NYX: tady je příklad konverze, akorát to není použitý v mapě: http://stackoverflow.com/...97/how-to-decode-json-with-type-convert-from-string-to-float64-in-golang
    možná zkusit nadefinovat klíč jako nový tip s anotací pro json?
    WILD_A
    WILD_A --- ---
    NYX: To je hezky a zalezi ti na rychlosti? Nejsnazsi cesta je dat Unmarshal do interface{} a pak si s tim muzes delat pohodlne co chces. Kdyby zalezelo na rychlosti tak bych se zase mozna podival na https://github.com/pquerna/ffjson to pouziva generator a mozna to je dostatecne flexibilni i pro takovy pripad, nezkousel jsem v tom nic nez klasicky veci. Dalsi moznost je pres go generate si udelat vlastni dekodovani.
    NYX
    NYX --- ---
    Mam tu fujtajblovy JSON, kde jsou numericke klice jako stringy...tj.

    {
       "5": {
       ... neco
       },
       "52": {
       ... neco
       },
       "57": {
       ... neco
       },
    }


    a chci to dostat do map[int64]neco, tj. ten stringovy klic zkonvertovat behem unmarshalu na cisla. Zkousel jsem tam dat nejaky svuj custom type, dat mu UnmarshalJSON() a dostat do do map[customType]neco, ale vypada to, ze pro klice se vubec nevola.

    tak kdyby treba nekdo mel napad co s tim.
    WILD_A
    WILD_A --- ---
    NYX: Myslim, ze ve vetsine pripadu je stav takovej, ze na vice mistech jsou nejaky mensi projekty udelany, ale k velkymu rozmachu jeste nedoslo a nevim jestli a kdy dojde
    CUCHULAIN
    CUCHULAIN --- ---
    Hledáme (DataSpring s.r.o.) do týmu programátora, aktuálně pro projekt v Go. Tak kdo se chcete přidat, ozvěte se mi do pošty.
    B3DA
    B3DA --- ---
    NYX: tusim jen ze Seznam a Skrz pouzivaji Go prave na ty zdlouhavejsi vypocty..
    NYX
    NYX --- ---
    jak moc se u nas Go vlastne rozsiruje? mate nekdo predstavu?

    mame tu na projektu takovou silenost v php, ktera nektere veci pocita i par hodin (idealne by to melo mit "webove prijatelnou" odezvu)...tak jsem to ciste ze zajmu prepsal do Go a z 3.5h jsem se dostal na 30s na podstatne slabsim zeleze.

    tak jestli az neco podobneho provedu priste, bude treba uz Go korporatne prijatelna varianta nebo to dopadne jako ted a bude to pouzitelne jen jako POC pro protlaceni prepisu do Javy.
    CUCHULAIN
    CUCHULAIN --- ---
    CUCHULAIN: pro upřesnění - jedná se o temp tabulku
    CUCHULAIN
    CUCHULAIN --- ---
    CUCHULAIN: tak jsem to vyřešil jinak.
    použil jsem driver github.com/minus5/gofreetds
    v něm můžu v jednom sql deklarovat tabulku, vložit do ní hodnoty a pak ji předat jako parametr do procedury :-)
    CUCHULAIN
    CUCHULAIN --- ---
    WILD_A: github.com/denisenkom/go-mssqldb
    WILD_A
    WILD_A --- ---
    CUCHULAIN: A jaky pouzivas dirver?
    CUCHULAIN
    CUCHULAIN --- ---
    tusite nekdo, jak z go volat proceduru v mssql, ktera ma jako parametry tabulky?
    WILD_A
    WILD_A --- ---
    REDGUY: Zalezi odkud prichazis ... z C/C++ sveta? Tak learning curve je mala, delka kodu mensi, i kdyz v pripade C++ s STL a pod to bude srovnatelny, nicmene na sitovy applikace je vetsina veci v standardni knihovne a je to na par radek, obecne myslim, ze standardni knihovna je fakt dobre vybavena a clovek si s ni fakt vystaci.
    Pokud prichazis z pythonu, tak learning curve je vetsi, pointery a "OOP" jsou celkem zmeny. Kodu clovek pise o neco vic, hlavne error handling, tj chce to editor se snipetama jelikoz psani if err != nil je vsude :) Nicmene nastroje okolo, jako psani testu a pod jsou snadny a pohodlny, ocenuju hodne profiler.

    Ladeni je celkem bez velkych obtizi, godebug, print a pokud uz nic tak furt mame GDB, ze jo, ale tam se hodne lidem nechce :)
    Kliknutím sem můžete změnit nastavení reklam