]> Sergey Matveev's repositories - stargrave-blog.git/commit
Выравнивание в Go
authorSergey Matveev <stargrave@stargrave.org>
Sat, 6 Feb 2016 11:21:37 +0000 (14:21 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sat, 6 Feb 2016 11:21:37 +0000 (14:21 +0300)
commitfbe0c5a8d6e51786a21d41fe63fbd2c6f863ef5e
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent891d9e0bd91f9360b83c5a904213036697eb8a3f
Выравнивание в Go

Так как на C никогда серьёзно не программировал, то и не встречался с
такой штукой как alignment. В Go только сегодня впервые встретился с
этим явлением: в sync/atomic библиотеке надо самостоятельно делать
выравнивание полей в структурах если нужно работать с ними через atomic
вызовы на 32-х битных системах.

То есть, например:

    struct Foo {
        bar *somepointer
        baz int64
    }

вызовет панику при попытке atomic.AddInt64(&(f *Foo).baz), но если
переставить местами bar и baz внутри структуры, то всё будет работать.
На 64-бит ничего этого не надо.