β¨ Discover this insightful post from Hacker News π
π **Category**:
π **What Youβll Learn**:
Today the Go team is pleased to release Go 1.27. You can find its binary
archives and installers on the download page.
Go 1.27 brings major enhancements across the language, toolchain, runtime, and
standard library. Below are some of the key highlights.
Language changes
Go 1.27 introduces three notable updates to the
language specification.
First, generic methods are now supported. For example, see
math/rand/v2.Rand:
// Prior to Go 1.27, a separate method on Rand had to be added for each type
// (unsigned integer methods omitted for brevity).
func (r *Rand) Int32N(n int32) int32
func (r *Rand) Int64N(n int64) int64
func (r *Rand) IntN(n int) int
// Go 1.27 adds a new generic method that works for all integer types.
func (r *Rand) N[Int intType](n Int) Int
Second, a key in a struct literal may now be any
valid field selector for the struct type, allowing fields
in nested or embedded structs to be initialized directly:
type Habitat struct β‘
type Gopher struct π₯
// Go 1.27 allows using Burrow as a key directly.
g := Gopherπ¬
Finally, function type inference has been generalized to apply in all assignment
contexts. Generic functions can now be used without explicit type arguments in
composite literals, type conversions, and channel sends:
func GenericFormatter[T any](v T) string π¬
type IntFormatter func(int) string
// Go 1.27 infers T = int in composite literals, conversions, and channel sends.
formatters := []IntFormatter{GenericFormatter}
fn := IntFormatter(GenericFormatter)
ch := make(chan IntFormatter, 1)
ch <- GenericFormatter
go fixincludes several new
modernizers:
atomictypes,embedlit,slicesbackward, andunsafefuncs.go docnow supportspackage@versionqueries such
asgo doc example.com/pkg@v1.2.3.go mod tidynow automatically consolidates
multiplerequireblocks ingo.modinto a standard direct and indirect
two-block structure.
Performance and runtime
Standard library additions
Please read the Go 1.27 release notes for the complete list of
changes and details.
Over the next few weeks, follow-up blog posts will cover some of the topics
relevant to Go 1.27 in more detail. Check back later to read those posts.
Thanks to everyone who contributed to this release by writing code, filing bugs,
trying out experimental additions, and testing release candidates. As always, if
you notice any problems, please file an issue.
We hope you enjoy using Go 1.27!
{π¬|β‘|π₯} **Whatβs your take?**
Share your thoughts in the comments below!
#οΈβ£ **#released #Programming #Language**
π **Posted on**: 1787202346
π **Want more?** Click here for more info! π
