Because go is always statically compiled for whatever platform you're on at the 
time, the default behavior is for importing go libraries using `go get` from 
the command line actually does a git clone of the code and compiles it on the 
fly (because go's compiler is pretty darn fast) and caches statically compiled 
versions of dependencies for builds. Go-Arrow follows this same typical golang 
pattern that you don't distribute a shared object binary but rather the go tool 
pulls the code and compiles the relevant code as needed. Because the import 
path tells it the full path to the go.mod file (the top of the module) it knows 
that it only needs the go/arrow directory tree for the module and as such it 
doesn't clone the entire git repo.

-----Original Message-----
From: Antoine Pitrou <anto...@python.org> 
Sent: Monday, August 23, 2021 2:00 PM
To: dev@arrow.apache.org
Subject: Re: [C++][Go] CGO For Dataset API Integration


Le 23/08/2021 à 19:53, Matthew Topol a écrit :
> The only thing I don't like it being a private module in the Go 
> implementation is distribution. For native go code, consumers can just 
> perform `go get` and have it work. But for this interface, it would require 
> both consumers of the module and any consumers of those consumers to have a 
> local built version of this library locally when building their Go code. Easy 
> to static link in for distributing binaries, but not for library builders.

Hmm, I think I'm lacking some context.  Do consumers of Go-Arrow code typically 
recompile Go-Arrow instead of using an existing binary?

Reply via email to