Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

99 бутылок: Go

48. Go — язык программирования, придуманный в «Гугле». Я на нём программирую, время от времени, и довольно неплохо его уже знаю. Замечательный, на мой взгляд, язык. Этакий «Си с человеческим лицом». Особенно интересно добавлено туда ООП, да и параллельные вычисления сделаны хорошо. Единственно — не нравится реализация обработки ошибок через panic/defer.

Язык статический, строгой типизации, компилируемый. Кстати, одна из особенностей языка — исключительно быстрая компиляция.

Некоторые ребята считают, что он похож на «Паскаль». Думаю это из-за конструкции «:=», которая означает в Гоу «создать локальную переменную с типом присваемого результата», а эти ребята ничего кроме этой конструкции из «Паскаля» не помнят.

package main
import "strconv"

func main() {
    for i := 99; i>0; i-- {
        b := bottles(i) + " of beer"

        println(b + " on the wall, " + b + ".")
        println("Take one down and pass it around, " + bottles(i-1) + " of beer on the wall.\n")
    }

    println("No more bottles of beer on the wall, no more bottles of beer.")
    println("Go to the store and buy some more, 99 bottles of beer on the wall.")
}

func bottles(beer int) string {
    switch (beer) {
        case 0:
            return "no bottles"
        case 1:
            return "1 bottle"
    }

    return strconv.Itoa(beer) + " bottles"
}