]> Cypherpunks repositories - gostls13.git/commit
spec: document operations which accept []byte|string constrained types
authorRobert Griesemer <gri@golang.org>
Wed, 15 Jun 2022 01:30:44 +0000 (18:30 -0700)
committerRobert Griesemer <gri@golang.org>
Tue, 21 Jun 2022 23:17:35 +0000 (23:17 +0000)
commitf2c7e78592973436a55cdfc4bca2fc3bce526cad
tree3450eff7a83a7bbd06841f7e86bf408f3fbda274
parentab422f2749bc21514cb22d444bae460f5fa22376
spec: document operations which accept []byte|string constrained types

Pre-1.18, as special cases, the built-in operations append and copy
accepted strings as second arguments if the first argument was a byte
slice. With Go 1.18, these two built-ins as well as slice expressions
rely on the notion of core types in their specification.

Because we want to permit slice expressions, append, and copy to
operate on (1st or 2nd operands) that are type parameters restricted
by []byte | string (and variations thereof), the simple notion of
core type is not sufficient for these three operations. (The compiler
already permits such more relaxed operations).

In the section on core types, add a paragraph and examples introducing
the (artificial) core type "bypestring", which describes the core type
of type sets whose underlying types are []byte or string. Adjust the
rules for slice expressions, append, and copy accordingly.

Also (unrelated): Adjust prose in the only paragraph where we used
personal speech ("we") to impersonal speech, to match the rest of
the spec.

Fixes #52859.

Change-Id: I1cbda3095a1136fb99334cc3a62a9a349a27ce1e
Reviewed-on: https://go-review.googlesource.com/c/go/+/412234
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
doc/go_spec.html