I'd say it's much more in line with Alan Kay's definition[1] of OO than most other languages.
It's statically typed, so it can check at compile-time that the "messages" being passed are valid, but the dispatch of the messages (ie, methods) is determined by the struct itself, which has the same effect as "extreme late binding" (Kay's words) - the only difference is that Go's type system permits much of this to happen at compile-time anyway.
[1] Which, incidentally, explicitly mentions inheritance as not being a defining point of OO programming.
It's statically typed, so it can check at compile-time that the "messages" being passed are valid, but the dispatch of the messages (ie, methods) is determined by the struct itself, which has the same effect as "extreme late binding" (Kay's words) - the only difference is that Go's type system permits much of this to happen at compile-time anyway.
[1] Which, incidentally, explicitly mentions inheritance as not being a defining point of OO programming.