I’ve started playing with Go today, just understood the basics and still a bit confused about the module and goroutine parts.
I’ll try to make something interesting soon.
I’ve started playing with Go today, just understood the basics and still a bit confused about the module and goroutine parts.
I’ll try to make something interesting soon.
@justamoment@twtxt.net I haven’t touched the goroutines yet (I played with these like 10 years ago), but I haven’t found a case where I need these.
About the modules, those were very non-intuitive to me, coming from Python, C#, and JS. I think the official documentation from Go is not clear enough and has no simple examples…
After a few searches, I reached Stack Overflow and blogs with tips for Modules and subdirectories. Now, I can replicate an MVC model with templates.
This project helped a lot: https://github.com/J7mbo/go-subdirectories-with-modules
@eaplmx@twtxt.net Thank you so much.
I got the fact that everything get bundled from a single folder but I too am used to properly specify what I want for every module since using Python/JS.
On my tries I managed to do local imports and compile with GO111MODULES
but I was confused on the uses of that flag. Online everything mentioned the url as a reference to the source and I was missing the point of using it locally from a single project.
On a post the recommendation was to not use folder which is pretty bad in my opinion for a bigger project, also looking at yarn repo didn’t cleared up my doubts (too big for me right now 😓).
Thanks again!
@carsten@yarn.zn80.net So I wanted to reply to this Yarn with some comments, but wasn’t able to really do so whilst out ‘n about camping with the family 😅 – Basically Go’s modules (the more recent version) is actually pretty good. Let me try to help you understand the basics of it…
When defining a new package/library, run go mod init git.mills.io/prologic/foo
(as an example). This could also be github.com/prologic/foo
or anywhere else with a publicly accessible Git source. I recommend this as the easiest as things will “just work”™.
Next, never do development in $GOPATH
as this is basically deprecated and gone now. Always code outside of $GOPATH
and use modules as per above.
Finally if you are not ready to publish your work and you depend on foo
and bar
and maybe something else too (like Yarn.social’s codebase) then use $ go mod edit -replace git.mills.io/prologic/foo /User/prologic/Projects/foo
(as an example).
@carsten@yarn.zn80.net Yes but only with the constructs i mentioned above👌
@prologic@twtxt.net I’m missing something here, does this allow to remap a local module with it, or is just a reference for the whole project/module locally?
@justamoment@twtxt.net I found that part is well documented 🙂
So, to understand the theory I started here
https://go.dev/blog/using-go-modules
And a few explanations in SO helped me to practice it in my project:
https://stackoverflow.com/a/57314494
@justamoment@twtxt.net and allows you to re-map dependencies to say for example, a forked copy of that library (which is the typical use case)
@eaplmx@twtxt.net @prologic@twtxt.net Thanks! 👍
Seems like it worked flawlessly, once I tried everything went in place.
The only thing I noticed is that the libraries didn’t auto-installed like in the documentation, they say to run a go get LIBRARY
but after that it’s all good.
I have to try making something now.
@justamoment@twtxt.net You most always either go get ...
or run go mod tidy‘ -- Building won't install/fetch dependencies not already cached.
@prologic@twtxt.net yes I discovered first hand. 😎
@prologic@twtxt.net the go get
and go mod tidy
wont fetch new changes. that’s all a manual affair AFAIK
ahh this is useful https://go.dev/doc/modules/managing-dependencies. the go culture doesn’t typically have large dependency graphs like Ruby or JS.
@xuu This is correct. The only way to update a dependency is to go get -u ...
that particular dependency.