3 ms·
Ah yes, Python's package manager has it wrong also. But at least Python the language is clear, so you can know "import foo" or "from bar import foo" creates a n
by remram 2y ago
Ah yes, Python's package manager has it wrong also. But at least Python the language is clear, so you can know "import foo" or "from bar import foo" creates a name "foo" in your file. Go has no such limitation. Imagine doing "import pyyaml" and "yaml" is the name defined...
- jakewins 2y agoWait I’m so confused by this - this is the opposite of how I thought it worked? Go import creates exactly the symbol you mention in the import statement, like “import fmt” creates a symbol “fmt”? Can you give an example of what you mean?
- sweeter 2y agoYea, this is correct. ```go import ( "net/http" "os" "github.com/anacrolix/torrent" tstor "github.com/anacrolix/torrent/storage" ) ``` would import as: http, os, torrent and tstor. That guy is mixed up.
- remram 2y agoI don't know what this proves. See example above for an example of exactly what I've said.
- thiht 2y agoThe only example I have in mind is modules, which can have a different name from their root package. For example you can have github.com/user/go-module as module name, and "module" as package name, so "import github.com/user/go-module" will be imported as "module.*". There’s a linter that automatically aliases this kind of imports with their actual module name so that it’s non ambiguous when reading the import list.
- remram 2y agoHere's an example, a package bar under a totally different name: package main // imports 'bar', you couldn't possibly know from reading this line import "github.com/remram44/foo20240527" func main() { // ??? where does this function come from ??? bar.SomeFunc() }