diff options
| author | Joe Tsai <joetsai@digital-static.net> | 2023-09-01 01:54:25 -0700 |
|---|---|---|
| committer | Joseph Tsai <joetsai@digital-static.net> | 2023-09-08 19:04:28 +0000 |
| commit | dac9b9ddbd5160c5f4552410f5f8281bd5eed38c (patch) | |
| tree | 63c2331085cdd08681cc2a8d1a30e5b513989ab5 /src/encoding/json | |
| parent | 45d3d10071830052b45a3299c26a1849a0c0c856 (diff) | |
| download | go-dac9b9ddbd5160c5f4552410f5f8281bd5eed38c.tar.xz | |
encoding: modernize Go documentation
Across all encoding packages, linkify declarations if possible.
In some cases, we convert a code block into a bulleted list,
which then further allows for more linkification.
Change-Id: I68fedf362615b34228bab5d4859b7d87d831c570
Reviewed-on: https://go-review.googlesource.com/c/go/+/524977
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: qiulaidongfeng <2645477756@qq.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/encoding/json')
| -rw-r--r-- | src/encoding/json/decode.go | 28 | ||||
| -rw-r--r-- | src/encoding/json/encode.go | 29 | ||||
| -rw-r--r-- | src/encoding/json/scanner.go | 2 | ||||
| -rw-r--r-- | src/encoding/json/stream.go | 26 |
4 files changed, 43 insertions, 42 deletions
diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go index 72188a66f6..bc1891f8ac 100644 --- a/src/encoding/json/decode.go +++ b/src/encoding/json/decode.go @@ -24,7 +24,7 @@ import ( // Unmarshal returns an [InvalidUnmarshalError]. // // Unmarshal uses the inverse of the encodings that -// Marshal uses, allocating maps, slices, and pointers as necessary, +// [Marshal] uses, allocating maps, slices, and pointers as necessary, // with the following additional rules: // // To unmarshal JSON into a pointer, Unmarshal first handles the case of @@ -41,7 +41,7 @@ import ( // [encoding.TextUnmarshaler.UnmarshalText] with the unquoted form of the string. // // To unmarshal JSON into a struct, Unmarshal matches incoming object -// keys to the keys used by Marshal (either the struct field name or its tag), +// keys to the keys used by [Marshal] (either the struct field name or its tag), // preferring an exact match but also accepting a case-insensitive match. By // default, object keys which don't have a corresponding struct field are // ignored (see [Decoder.DisallowUnknownFields] for an alternative). @@ -49,12 +49,12 @@ import ( // To unmarshal JSON into an interface value, // Unmarshal stores one of these in the interface value: // -// bool, for JSON booleans -// float64, for JSON numbers -// string, for JSON strings -// []interface{}, for JSON arrays -// map[string]interface{}, for JSON objects -// nil for JSON null +// - bool, for JSON booleans +// - float64, for JSON numbers +// - string, for JSON strings +// - []interface{}, for JSON arrays +// - map[string]interface{}, for JSON objects +// - nil for JSON null // // To unmarshal a JSON array into a slice, Unmarshal resets the slice length // to zero and then appends each element to the slice. @@ -72,8 +72,8 @@ import ( // use. If the map is nil, Unmarshal allocates a new map. Otherwise Unmarshal // reuses the existing map, keeping existing entries. Unmarshal then stores // key-value pairs from the JSON object into the map. The map's key type must -// either be any string type, an integer, implement json.Unmarshaler, or -// implement encoding.TextUnmarshaler. +// either be any string type, an integer, implement [json.Unmarshaler], or +// implement [encoding.TextUnmarshaler]. // // If the JSON-encoded data contain a syntax error, Unmarshal returns a [SyntaxError]. // @@ -81,7 +81,7 @@ import ( // or if a JSON number overflows the target type, Unmarshal // skips that field and completes the unmarshaling as best it can. // If no more serious errors are encountered, Unmarshal returns -// an UnmarshalTypeError describing the earliest such error. In any +// an [UnmarshalTypeError] describing the earliest such error. In any // case, it's not guaranteed that all the remaining fields following // the problematic one will be unmarshaled into the target object. // @@ -114,7 +114,7 @@ func Unmarshal(data []byte, v any) error { // a JSON value. UnmarshalJSON must copy the JSON data // if it wishes to retain the data after returning. // -// By convention, to approximate the behavior of Unmarshal itself, +// By convention, to approximate the behavior of [Unmarshal] itself, // Unmarshalers implement UnmarshalJSON([]byte("null")) as a no-op. type Unmarshaler interface { UnmarshalJSON([]byte) error @@ -151,8 +151,8 @@ func (e *UnmarshalFieldError) Error() string { return "json: cannot unmarshal object key " + strconv.Quote(e.Key) + " into unexported field " + e.Field.Name + " of type " + e.Type.String() } -// An InvalidUnmarshalError describes an invalid argument passed to Unmarshal. -// (The argument to Unmarshal must be a non-nil pointer.) +// An InvalidUnmarshalError describes an invalid argument passed to [Unmarshal]. +// (The argument to [Unmarshal] must be a non-nil pointer.) type InvalidUnmarshalError struct { Type reflect.Type } diff --git a/src/encoding/json/encode.go b/src/encoding/json/encode.go index 6fee1dc00b..9d6d7adcef 100644 --- a/src/encoding/json/encode.go +++ b/src/encoding/json/encode.go @@ -42,17 +42,17 @@ import ( // // Boolean values encode as JSON booleans. // -// Floating point, integer, and Number values encode as JSON numbers. +// Floating point, integer, and [Number] values encode as JSON numbers. // NaN and +/-Inf values will return an [UnsupportedValueError]. // // String values encode as JSON strings coerced to valid UTF-8, // replacing invalid bytes with the Unicode replacement rune. // So that the JSON will be safe to embed inside HTML <script> tags, -// the string is encoded using HTMLEscape, +// the string is encoded using [HTMLEscape], // which replaces "<", ">", "&", U+2028, and U+2029 are escaped // to "\u003c","\u003e", "\u0026", "\u2028", and "\u2029". -// This replacement can be disabled when using an Encoder, -// by calling SetEscapeHTML(false). +// This replacement can be disabled when using an [Encoder], +// by calling [Encoder.SetEscapeHTML](false). // // Array and slice values encode as JSON arrays, except that // []byte encodes as a base64-encoded string, and a nil slice @@ -109,7 +109,7 @@ import ( // only Unicode letters, digits, and ASCII punctuation except quotation // marks, backslash, and comma. // -// Anonymous struct fields are usually marshaled as if their inner exported fields +// Embedded struct fields are usually marshaled as if their inner exported fields // were fields in the outer struct, subject to the usual Go visibility rules amended // as described in the next paragraph. // An anonymous struct field with a name given in its JSON tag is treated as @@ -136,11 +136,11 @@ import ( // a JSON tag of "-". // // Map values encode as JSON objects. The map's key type must either be a -// string, an integer type, or implement encoding.TextMarshaler. The map keys +// string, an integer type, or implement [encoding.TextMarshaler]. The map keys // are sorted and used as JSON object keys by applying the following rules, // subject to the UTF-8 coercion described for string values above: // - keys of any string type are used directly -// - encoding.TextMarshalers are marshaled +// - [encoding.TextMarshalers] are marshaled // - integer keys are converted to strings // // Pointer values encode as the value pointed to. @@ -151,7 +151,7 @@ import ( // // Channel, complex, and function values cannot be encoded in JSON. // Attempting to encode such a value causes Marshal to return -// an UnsupportedTypeError. +// an [UnsupportedTypeError]. // // JSON cannot represent cyclic data structures and Marshal does not // handle them. Passing cyclic structures to Marshal will result in @@ -169,7 +169,7 @@ func Marshal(v any) ([]byte, error) { return buf, nil } -// MarshalIndent is like Marshal but applies Indent to format the output. +// MarshalIndent is like [Marshal] but applies [Indent] to format the output. // Each JSON element in the output will begin on a new line beginning with prefix // followed by one or more copies of indent according to the indentation nesting. func MarshalIndent(v any, prefix, indent string) ([]byte, error) { @@ -191,7 +191,7 @@ type Marshaler interface { MarshalJSON() ([]byte, error) } -// An UnsupportedTypeError is returned by Marshal when attempting +// An UnsupportedTypeError is returned by [Marshal] when attempting // to encode an unsupported value type. type UnsupportedTypeError struct { Type reflect.Type @@ -201,7 +201,7 @@ func (e *UnsupportedTypeError) Error() string { return "json: unsupported type: " + e.Type.String() } -// An UnsupportedValueError is returned by Marshal when attempting +// An UnsupportedValueError is returned by [Marshal] when attempting // to encode an unsupported value. type UnsupportedValueError struct { Value reflect.Value @@ -212,9 +212,9 @@ func (e *UnsupportedValueError) Error() string { return "json: unsupported value: " + e.Str } -// Before Go 1.2, an InvalidUTF8Error was returned by Marshal when +// Before Go 1.2, an InvalidUTF8Error was returned by [Marshal] when // attempting to encode a string value with invalid UTF-8 sequences. -// As of Go 1.2, Marshal instead coerces the string to valid UTF-8 by +// As of Go 1.2, [Marshal] instead coerces the string to valid UTF-8 by // replacing invalid bytes with the Unicode replacement rune U+FFFD. // // Deprecated: No longer used; kept for compatibility. @@ -226,7 +226,8 @@ func (e *InvalidUTF8Error) Error() string { return "json: invalid UTF-8 in string: " + strconv.Quote(e.S) } -// A MarshalerError represents an error from calling a MarshalJSON or MarshalText method. +// A MarshalerError represents an error from calling a +// [Marshaler.MarshalJSON] or [encoding.TextMarshaler.MarshalText] method. type MarshalerError struct { Type reflect.Type Err error diff --git a/src/encoding/json/scanner.go b/src/encoding/json/scanner.go index 4c43f5f98c..da6ea2ac8f 100644 --- a/src/encoding/json/scanner.go +++ b/src/encoding/json/scanner.go @@ -43,7 +43,7 @@ func checkValid(data []byte, scan *scanner) error { } // A SyntaxError is a description of a JSON syntax error. -// Unmarshal will return a SyntaxError if the JSON can't be parsed. +// [Unmarshal] will return a SyntaxError if the JSON can't be parsed. type SyntaxError struct { msg string // description of error Offset int64 // error occurred after reading Offset bytes diff --git a/src/encoding/json/stream.go b/src/encoding/json/stream.go index b4146a359e..5c98d1de04 100644 --- a/src/encoding/json/stream.go +++ b/src/encoding/json/stream.go @@ -33,7 +33,7 @@ func NewDecoder(r io.Reader) *Decoder { } // UseNumber causes the Decoder to unmarshal a number into an interface{} as a -// Number instead of as a float64. +// [Number] instead of as a float64. func (dec *Decoder) UseNumber() { dec.d.useNumber = true } // DisallowUnknownFields causes the Decoder to return an error when the destination @@ -44,7 +44,7 @@ func (dec *Decoder) DisallowUnknownFields() { dec.d.disallowUnknownFields = true // Decode reads the next JSON-encoded value from its // input and stores it in the value pointed to by v. // -// See the documentation for Unmarshal for details about +// See the documentation for [Unmarshal] for details about // the conversion of JSON into a Go value. func (dec *Decoder) Decode(v any) error { if dec.err != nil { @@ -79,7 +79,7 @@ func (dec *Decoder) Decode(v any) error { } // Buffered returns a reader of the data remaining in the Decoder's -// buffer. The reader is valid until the next call to Decode. +// buffer. The reader is valid until the next call to [Decoder.Decode]. func (dec *Decoder) Buffered() io.Reader { return bytes.NewReader(dec.buf[dec.scanp:]) } @@ -196,7 +196,7 @@ func NewEncoder(w io.Writer) *Encoder { // Encode writes the JSON encoding of v to the stream, // followed by a newline character. // -// See the documentation for Marshal for details about the +// See the documentation for [Marshal] for details about the // conversion of Go values to JSON. func (enc *Encoder) Encode(v any) error { if enc.err != nil { @@ -253,7 +253,7 @@ func (enc *Encoder) SetEscapeHTML(on bool) { } // RawMessage is a raw encoded JSON value. -// It implements Marshaler and Unmarshaler and can +// It implements [Marshaler] and [Unmarshaler] and can // be used to delay JSON decoding or precompute a JSON encoding. type RawMessage []byte @@ -279,12 +279,12 @@ var _ Unmarshaler = (*RawMessage)(nil) // A Token holds a value of one of these types: // -// Delim, for the four JSON delimiters [ ] { } -// bool, for JSON booleans -// float64, for JSON numbers -// Number, for JSON numbers -// string, for JSON string literals -// nil, for JSON null +// - [Delim], for the four JSON delimiters [ ] { } +// - bool, for JSON booleans +// - float64, for JSON numbers +// - [Number], for JSON numbers +// - string, for JSON string literals +// - nil, for JSON null type Token any const ( @@ -354,14 +354,14 @@ func (d Delim) String() string { } // Token returns the next JSON token in the input stream. -// At the end of the input stream, Token returns nil, io.EOF. +// At the end of the input stream, Token returns nil, [io.EOF]. // // Token guarantees that the delimiters [ ] { } it returns are // properly nested and matched: if Token encounters an unexpected // delimiter in the input, it will return an error. // // The input stream consists of basic JSON values—bool, string, -// number, and null—along with delimiters [ ] { } of type Delim +// number, and null—along with delimiters [ ] { } of type [Delim] // to mark the start and end of arrays and objects. // Commas and colons are elided. func (dec *Decoder) Token() (Token, error) { |
