Open2

goリポジトリ内のmapの命名例

Yoshiharu SuzukiYoshiharu Suzuki

netパッケージ内の型名

// A Header represents the key-value pairs in an HTTP header.
//
// The keys should be in canonical form, as returned by
// CanonicalHeaderKey.
type Header map[string][]string

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/http/header.go#L24-L23

単数形。
コメントでキーとバリューのペアであることを説明。
またキーのフォーマットのルールもコメントで補足。


// Values maps a string key to a list of values.
// It is typically used for query parameters and form values.
// Unlike in the http.Header map, the keys in a Values map
// are case-sensitive.
type Values map[string][]string

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/url/url.go#L865-L864

コメントでマップ構造であることが説明されている。
キーがcase-sensitiveであることがコメントにある。


type fakeFS map[string]*fakeFileInfo

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/http/fs_test.go#L702

単数形?
コメントなし。unexportedだからか。


type stats map[Cookie]*Stat

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/internal/socktest/switch.go#L106

複数形?
こちらもコメントなし。


// Sockets maps a socket descriptor to the status of socket.
type Sockets map[int]Status

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/internal/socktest/switch_unix.go#L9-L11

複数形。
コメントでxxx to xxx という言い方をしている。


// A Header represents the key-value pairs in a mail message header.
type Header map[string][]string

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/mail/message.go#L147-L149

「メールメッセージヘッダー」におけるキー・バリューペアとだけ言っている。
キーが何かはそこから察するということか。
単数形。


// A MIMEHeader represents a MIME-style header mapping
// keys to sets of values.
type MIMEHeader map[string][]string

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/textproto/header.go#L7-L10

単数形。
MIMEスタイルのヘッダーマッピングという言い方でマップであることを言っている。

Yoshiharu SuzukiYoshiharu Suzuki

netパッケージ内のフィールド名

var hosts struct {
	// Key for the list of literal IP addresses must be a host
	// name. It would be part of DNS labels, a FQDN or an absolute
	// FQDN.
	// For now the key is converted to lower case for convenience.
	byName map[string][]string

	// Key for the list of host names must be a literal IP address
	// including IPv6 address with zone identifier.
	// We don't support old-classful IP address notation.
	byAddr map[string][]string
}

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/hosts.go#L31-L51


type http2clientConnPool struct {
	conns        map[string][]*http2ClientConn // key is host:port
	dialing      map[string]*http2dialCall     // currently in-flight dials
	keys         map[*http2ClientConn][]string
	addConnCalls map[string]*http2addConnCall // in-flight addConnIfNeeded calls
}

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/http/h2_bundle.go#L763-L773

値の型の複数形を付けている感じ。
キーが何を表すかはコメントで補足している。


type Response struct {
	// Header maps header keys to values. If the response had multiple
	// headers with the same key, they may be concatenated, with comma
	// delimiters.  (RFC 7230, section 3.2.2 requires that multiple headers
	// be semantically equivalent to a comma-delimited sequence.) When
	// Header values are duplicated by other fields in this struct (e.g.,
	// ContentLength, TransferEncoding, Trailer), the field values are
	// authoritative.
	//
	// Keys in the map are canonicalized (see CanonicalHeaderKey).
	Header Header

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/http/response.go#L50

コメントでmapであることを説明している。


type Transport struct {
	idleConn     map[connectMethodKey][]*persistConn // most recently used at end
	idleConnWait map[connectMethodKey]wantConnQueue  // waiting getConns

https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/net/http/transport.go#L95-L100