# fmt

Published articles for fmt.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## C++29 -- начало. Встреча ISO C++ в Брно

DevFeed: [C++29 -- начало. Встреча ISO C++ в Брно](<https://devfeed.tech/articles/c-29-iso-c-24878.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/yandex/articles/1067348/>)

Author: antoshkka (Яндекс)

Published: 2026-08-17T07:01:31Z

Content type: article

Language: ru

Sources: [Яндекс - Как мы делаем Яндекс / Статьи](<https://devfeed.tech/sources/source.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [floating-point](<https://devfeed.tech/topics/floating-point.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-plus-plus-29](<https://devfeed.tech/tags/c-plus-plus-29.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [fmt](<https://devfeed.tech/tags/fmt.md>), [format](<https://devfeed.tech/tags/format.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [iso](<https://devfeed.tech/tags/iso.md>), [standard](<https://devfeed.tech/tags/standard.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>), [tagged-pointers](<https://devfeed.tech/tags/tagged-pointers.md>), [thread](<https://devfeed.tech/tags/thread.md>), [threads](<https://devfeed.tech/tags/threads.md>), [undefined-behavior](<https://devfeed.tech/tags/undefined-behavior.md>), [undefined-behaviour](<https://devfeed.tech/tags/undefined-behaviour.md>)

### AI overview

A report on the ISO C++ committee meeting in Brno, where work on C++29 began. It describes plans to organize and clarify documented undefined behavior and ill-formed-no-diagnostic-required cases, along with changes involving constexpr floating-point evaluation and other language rules.

### Source excerpt

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. Недавно в Брно состоялась встреча международного комитета по стандартизации языка программирования C++, в которой я принимал активное участие. В этот раз началась работа над C++29 и как раз о новинках и хочется рассказать. Читать далее

## Golang Interface 内部实现

DevFeed: [Golang Interface 内部实现](<https://devfeed.tech/articles/golang-interface-40985.md>)

Original publisher: [Read original article](<https://blog.joway.io/posts/golang-interface-internal/>)

Author: Joway

Published: 2021-01-20T00:00:00Z

Content type: tutorial

Language: zh

Sources: [Random Thoughts](<https://devfeed.tech/sources/random-thoughts.md>)

Topics: [interface](<https://devfeed.tech/topics/interface.md>)

Tags: [fmt](<https://devfeed.tech/tags/fmt.md>), [implement](<https://devfeed.tech/tags/implement.md>), [interface](<https://devfeed.tech/tags/interface.md>), [run](<https://devfeed.tech/tags/run.md>), [tech](<https://devfeed.tech/tags/tech.md>), [type](<https://devfeed.tech/tags/type.md>)

### AI overview

The article explains how Golang interface values are represented internally and how a non-atomic assignment can leave type information present while the stored pointer is nil. This can make a nil check fail, allow a type conversion to succeed, and cause a panic only when the method is called.

### Source excerpt

最近遇到一个由于 Golang Interface 底层实现，引发的线上 panic 问题，虽然根源在于赋值操作没有保护起来，却意外地发现了关于 interface 的一些有意思的底层细节。 假设我们现在有以下定义： type Interface interface { Run() } type Implement struct { n int } func (i *Implement) Run() { fmt.Printf(i.n) } 对于使用者而言，一个变量无论是 Interface 类型或是 *Implement 类型，差别都不大。

## Macro View of Map Internals In Go

DevFeed: [Macro View of Map Internals In Go](<https://devfeed.tech/articles/macro-view-of-map-internals-in-go-22087.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2013/12/macro-view-of-map-internals-in-go.html>)

Published: 2013-12-31T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ardan-labs](<https://devfeed.tech/tags/ardan-labs.md>), [blog](<https://devfeed.tech/tags/blog.md>), [fmt](<https://devfeed.tech/tags/fmt.md>), [go](<https://devfeed.tech/tags/go.md>), [go-programming](<https://devfeed.tech/tags/go-programming.md>), [golang](<https://devfeed.tech/tags/golang.md>), [hash](<https://devfeed.tech/tags/hash.md>), [internals](<https://devfeed.tech/tags/internals.md>), [map](<https://devfeed.tech/tags/map.md>), [maps](<https://devfeed.tech/tags/maps.md>), [memory](<https://devfeed.tech/tags/memory.md>), [padding](<https://devfeed.tech/tags/padding.md>), [programming](<https://devfeed.tech/tags/programming.md>), [range](<https://devfeed.tech/tags/range.md>)

### AI overview

This tutorial explains how Go maps are created and used, why iteration order is not guaranteed, and how maps are organized internally as hash tables with power-of-two bucket counts. It also introduces bucket selection, overflow, and memory padding.

### Source excerpt

Introduction There are lots of posts that talk about the internals of slices, but when it comes to maps, we are left in the dark. I was wondering why and then I found the code for maps and it all made sense. https://golang.org/src/runtime/hashmap.go At least for me, this code is complicated. That being said, I think we can create a macro view of how maps are structured and grow. This should explain why they are unordered, efficient and fast. Creating and Using Maps Let's look at how we can use a map literal to create a map and store a few values:

## Functions and Naked Returns In Go

DevFeed: [Functions and Naked Returns In Go](<https://devfeed.tech/articles/functions-and-naked-returns-in-go-22078.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2013/10/functions-and-naked-returns-in-go.html>)

Published: 2013-10-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Error Handling](<https://devfeed.tech/topics/error-handling.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [ardan-labs](<https://devfeed.tech/tags/ardan-labs.md>), [blog](<https://devfeed.tech/tags/blog.md>), [code](<https://devfeed.tech/tags/code.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [fmt](<https://devfeed.tech/tags/fmt.md>), [function](<https://devfeed.tech/tags/function.md>), [go](<https://devfeed.tech/tags/go.md>), [go-error-handling](<https://devfeed.tech/tags/go-error-handling.md>), [go-programming](<https://devfeed.tech/tags/go-programming.md>), [golang](<https://devfeed.tech/tags/golang.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scope](<https://devfeed.tech/tags/scope.md>), [shadowing](<https://devfeed.tech/tags/shadowing.md>), [variable](<https://devfeed.tech/tags/variable.md>)

### AI overview

This Go tutorial explains returning multiple values, handling errors through returned error values, ignoring a return value with an underscore, naming return arguments, and using naked returns. It also warns about variable shadowing and explains how braces create new scopes.

### Source excerpt

In Go values that are returned from functions are passed by value. Go gives you some nice flexibility when it comes to returning values from a function. Here is a simple example of returning two values from a function: package main import ( "fmt" ) func main() { id, err := ReturnId() if err != nil { fmt.Printf("ERROR: %s", err) return } fmt.Printf("Id: %d\n", id) } func ReturnId() (int, error) { id := 10 return id, nil } The function ReturnId returns a value of type integer and of type error. This is something very common that is done in Go. Error handling is performed by returning a value of type error from your functions and the calling function evaluating that value before continuing. If you don't care about the error for some reason after a function call returns, you can do something like this: id, _ := ReturnId() This time I used an underscore to represent the return value for the second return argument, which was the error. This is really nice because I don't need to declare a variable to hold the value being passed in, I can simply ignore it. You also have the option to name your return arguments: func ReturnId() (id int, err error) { id = 10 return id, err } If you name your return arguments you are creating local variables just like with your function parameters. This time when I set the id variable, I remove the colon (:) from the short variable declaration and convert it to an assignment operation. Then in the return I specify the return variables as normal. Naming your return arguments is a nice way to document what you are returning. There is also something else that you can do with your named arguments, or not do: func ReturnId() (id int, err error) { id = 10 return } This is what is called a naked return. I have removed the arguments from the return statement. The Go compiler automatically returns the current values in the return arguments local variables. Though this is really cool you need to watch for shadowing: func ReturnId() (id int, err error)