[HN Gopher] Three Minor Features in Go 1.18 ___________________________________________________________________ Three Minor Features in Go 1.18 Author : throwaway894345 Score : 124 points Date : 2021-12-22 18:54 UTC (4 hours ago) (HTM) web link (blog.carlmjohnson.net) (TXT) w3m dump (blog.carlmjohnson.net) | Laremere wrote: | The investigation to justify the introduction of the Cut function | was an interesting read. Really solid numbers on those data to | show that the function, while redundant with other functionality | provided, is an extremely common operation and worth special | casing. | klodolph wrote: | I've been copy-pasting or re-writing a function much like | strings.Cut, probably dozens of times, in different Go packages. | It's nice to see this function make it into the standard library! | [deleted] | yagizdegirmenci wrote: | Go 1.18 also includes the new net/netip package which is huge, | now the Addr type holds less memory, it is comparable and | immutable. | | There is also a great post(See: | https://tailscale.com/blog/netaddr-new-ip-type-for-go/) in | Tailscale's blog which deep dives into why we needed a new IP | type/library in Go. | onphonenow wrote: | I'm far more excited by Addr / netip then generics :) | sabellito wrote: | I haven't done any Go in my life, but this bit about | immutability interests me. Is there a general movement in the | Go community towards immutable data structures? | lbhdc wrote: | I don't think there is a movement towards immutable data | structures. The const keyword only works on basic types | (bool, num, str). Objects can have private member variables, | but those are only private on the module level. You can also | pass by copy instead of passing a pointer. | lifty wrote: | Is this Tailscale's library imported into Go's stdlib? | pphysch wrote: | Yep | benhoyt wrote: | Yes, after some discussion and minor modifications (and | removal of a few features): | https://github.com/golang/go/discussions/47323 ... I | understand the motivation for this new package, but it does | seem like a large API surface to have imported into the | stdlib. | pstuart wrote: | Being that this is coming from a (former) core maintainer | of the stdlib I think it's worthy. | na85 wrote: | Isn't that one of Go's main value propositions? A | batteries-and-kitchen-sink-included stdlib? | naikrovek wrote: | where does one find a comprehensive list of new things for each | version? the release notes never seem to know everything that | people in here know. | lbhdc wrote: | I normally look at the go blog. Their post about 1.18 linked | the detailed release notes. | | https://tip.golang.org/doc/go1.18 | ccakes wrote: | Hadn't seen this but yeah, a much needed improvement! | jaytaylor wrote: | Also see past HN thread about it: | | https://news.ycombinator.com/item?id=26416553 | howdydoo wrote: | strings.Cut is otherwise known in Rust as str::split_once. It's | something I've always missed when writing Go. Nice to see it | added to the stdlib | tialaramex wrote: | Yes, I use this much more often than the more powerful general | split feature, it feels very "right-sized". | | split_once() and similar split features in Rust are interesting | because Rust doesn't have overloading, yet you can split on a | string, or a character. This relies on a Trait, Pattern, that | is Nightly, so you can't Implement it yourself in stable Rust | today, but eventually this factors out the commonality which is | cleverer than overloading (because it applies everywhere | automatically) | jaytaylor wrote: | I subscribed to GH activity for the Author's friendliness- | enhancing utility library. It's for parsing build information | from the debug pkg: | | https://github.com/carlmjohnson/versioninfo/ | | The primary motivation curiousity to learn if this becomes "the | [best/default] way" folks reach for when leveraging BuildInfo to | implement binary versioning in Golang. | | It could be a nice benefit to the entire go ecosystem if there | becomes a widely-used, de-facto, and consistent automatic | versioning scheme (for the common cases, e.g. minor point release | lineage). | Scarbutt wrote: | For those that have switched to Go from nodejs to serve json for | a web app, how did it go? (excluding the possibility of needing | something like react ssr which can be a big one for many apps). | randomdata wrote: | _> excluding the possibility of needing something like react | ssr_ | | No need to exclude that possibility. I once worked on a Go app | that rendered React (in Typescript) server-side. The Javascript | could call Go API functions directly when rendering server-side | and those calls would turn into gRPC-web calls after it was | loaded in the client. It worked really well. ___________________________________________________________________ (page generated 2021-12-22 23:00 UTC)