Автор Тема: Язык программирования Go  (Прочитано 20079 раз)

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #45 : Декабрь 14, 2012, 10:49:36 am »
Установил git, все равно вылетает с кучей ошибок.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #46 : Декабрь 14, 2012, 12:23:38 pm »
Установил git, все равно вылетает с кучей ошибок.
Кучу ошибок в студию!
Y = λf.(λx.f (x x)) (λx.f (x x))

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #47 : Декабрь 14, 2012, 12:36:19 pm »
C:\Program Files\Go\bin>go get github.com/AllenDang/gform
# github.com/AllenDang/gform
..\src\pkg\github.com\AllenDang\gform\app.go:16: cannot use 8 (type uint) as typ
e uint32 in assignment
..\src\pkg\github.com\AllenDang\gform\bitmap.go:22: cannot use dib.DsBmih.BiWidt
h (type int32) as type int in field value
..\src\pkg\github.com\AllenDang\gform\bitmap.go:23: cannot use dib.DsBmih.BiHeig
ht (type int32) as type int in field value
..\src\pkg\github.com\AllenDang\gform\canvas.go:65: cannot use rc.Left (type int
32) as type int in function argument
..\src\pkg\github.com\AllenDang\gform\canvas.go:65: cannot use rc.Top (type int3
2) as type int in function argument
..\src\pkg\github.com\AllenDang\gform\canvas.go:65: cannot use rc.Right (type in
t32) as type int in function argument
..\src\pkg\github.com\AllenDang\gform\canvas.go:65: cannot use rc.Bottom (type i
nt32) as type int in function argument
..\src\pkg\github.com\AllenDang\gform\canvas.go:81: cannot use w32Rect.Left (typ
e int32) as type int in function argument
..\src\pkg\github.com\AllenDang\gform\canvas.go:81: cannot use w32Rect.Top (type
 int32) as type int in function argument
..\src\pkg\github.com\AllenDang\gform\canvas.go:81: cannot use w32Rect.Right (ty
pe int32) as type int in function argument
..\src\pkg\github.com\AllenDang\gform\canvas.go:81: too many errors

C:\Program Files\Go\bin>

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #48 : Декабрь 14, 2012, 01:00:55 pm »
Дык это ошибки компиляции. Было бы очень странно если бы оно собралось.

Скажем взять вот это:
..\src\pkg\github.com\AllenDang\gform\canvas.go:65: cannot use rc.Right (type in
t32) as type int in function argument
rc - это тип w32.RECT:
type RECT struct {
Left, Top, Right, Bottom int32
}

А функция куда этот Right передается имеет следующую сигнатуру:
func StretchBlt(hdcDest HDC, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest int, hdcSrc HDC, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc int, dwRop uint)
Следовательно нужна явное приведение типов из int32 к int согласно описанию языка:
Conversions are required when different numeric types are mixed in an expression or assignment. For instance, int32 and int are not the same type even though they may have the same size on a particular architecture.

То есть это не проблема установки/сборки, а косяк в коде либ. Заводи им на гитхабе соответствующий Issue с описанием проблемы.

Все остальные ошибки компиляции - аналогичны.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #49 : Декабрь 14, 2012, 01:11:08 pm »
Поправочка - rc это переменная типа w32.RECT
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #50 : Январь 14, 2013, 05:25:31 pm »
По работе пишу сейчас програмку на Go. Напоролся на какую-то невнятную утечку памяти (пока не понятно где именно, но похоже в стандартной либе), в результате память не только жрется и не освобождается со временем, но еще и дико грузится процессор (да-да, постоянно дергается системой сборщик мусора, он идет искать кого там прибить можно, ан никого нельзя, поэтому он работает в холостую, но при этом жрет процентов 80 от всей загрузки). И это конечно минус.

Пришлось познакомиться с профилировщиком гошным. Профилировщик там удобный и доходчивый (и память и CPU), и это плюс (пример использования: http://blog.golang.org/2011/06/profiling-go-programs.html , правда там старая версия, сейчас несколько иначе).

Разбираюсь дальше.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #51 : Январь 14, 2013, 07:05:43 pm »
Итить колотить! за 30 минут работы в куче валяется миллион (точнее 947007) живых объектов.
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #52 : Январь 14, 2013, 07:17:00 pm »
что это за rabbitware такое? : )

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #53 : Январь 14, 2013, 07:20:30 pm »
что это за rabbitware такое? : )
parser error :-) Что такое rabbitware?
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #54 : Январь 15, 2013, 12:49:17 am »
Победил:
Цитировать
[03:30:31] <valexеy> есть модуль session, который позволяет куками оперировать. собственно вся инфа хранится на стороне клиента (браузера) а не сервера, ога.
[03:30:58] <valexеy> но при этом при реаизации этой session они заюзали модуль context, который, сволочь, сохраняет в глобальной переменной КАЖДЫЙ реквест!
[03:31:01] <valexеy> от клиента
[03:31:39] <valexеy> и чтобы этого не было нужно кроме модуля session себе заимпортировать модуль context и после обработки реквеста явным образом дергать context.Close(r), где r это request
[03:31:55] <valexеy> пардон, не Close, а Clean
И да, в доке это не отражено.

PS. Самое смешное, что после того как все почистил, если верить профилеровщику, один фиг эти secure cooies жрут CPU больше всех, и мусорят там тоже больше всех. Процентов 70 жрут от оставшегося.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #55 : Январь 18, 2013, 02:42:13 pm »
Человек делится опытом написания на Go (внимание, английский!): http://corte.si/posts/code/go/go-rant.html

В общем то я с ним согласен - то, что Go считает неиспользованный импорт, или переменную ошибкой - дико раздражает и мешает. Приходится в ходе разработки совершать уйму бесполезных телодвижений.
Y = λf.(λx.f (x x)) (λx.f (x x))