From d951ce4e457075fee56a61a8f589ede7647d778b Mon Sep 17 00:00:00 2001
From: Rob Pike
+Every package should have a package comment, a block +comment preceding the package clause. +It should introduce the package and +provide information relevant to the package as a whole. +
+ ++/* + The regexp package implements a simple library for + regular expressions. + + The syntax of the regular expressions accepted is: + + regexp: + concatenation { '|' concatenation } + concatenation: + { closure } + closure: + term [ '*' | '+' | '?' ] + term: + '^' + '$' + '.' + character + '[' [ '^' ] character-ranges ']' + '(' regexp ')' +*/ +package regexp ++ +
+Consider how the package comment contributes to the appearance
+of the godoc
page for the package. Don't just
+echo the doc comments for the components. The package comment
+can be brief.
+
+// The path package implements utility routines for +// manipulating slash-separated filename paths. ++
@@ -193,7 +238,6 @@ Use of complete English sentences admits a wider variety of automated presentations.
-@@ -208,14 +252,15 @@ sure the columns are lined up properly in the output.
-If you must use comments to separate +If you need comments to separate sections in a file, use a simple block comment:
/* - * Helper routines for simplifying the fetching of optional fields of basic type. - * If the field is missing, they return the zero for the type. + * Helper routines for simplifying the fetching of optional + * fields of basic type. If the field is missing, they return + * the zero for the type. */@@ -223,8 +268,9 @@ or
/* - Helper routines for simplifying the fetching of optional fields of basic type. - If the field is missing, they return the zero for the type. + Helper routines for simplifying the fetching of optional + fields of basic type. If the field is missing, they return + the zero for the type. */@@ -233,6 +279,39 @@ Comments are text, not HTML; they contain no markup. Refrain from ASCII embellishment like *this* or /this/. +
+Go's declaration syntax allows grouping of declarations. +A comment can introduce a group of related constants or variables. +
+ ++// Flags to Open wrapping those of the underlying system. +// Not all flags may be implemented on a given system. +const ( + O_RDONLY = syscall.O_RDONLY; // open the file read-only. + O_WRONLY = syscall.O_WRONLY; // open the file write-only. + ... +) ++ +
+A grouping can also indicate relationships between items, +such as the fact that a set of variables is controlled by +a mutex. +
+ ++// Variables protected by counterLock. +var ( + counterLock sync.Mutex; + inputCount uint32; + outputCount uint32; + errorCount uint32; +) ++
+// Prepare RPCMessage to send to server +rpc := &RPCMessage { + Version: 1, + Header: &RPCHeader { + Id: nextId(), + Signature: sign(body), + Method: method, + }, + Body: body, +}; +
-hdr, body, checksum := buf[0:20], buf[20:len(buf)-4], buf[len(buf)-4:len(buf)]; +header, body, checksum := buf[0:20], buf[20:n-4], buf[n-4:n];
-// Compare returns an integer comparing the two byte arrays lexicographically. +// Compare returns an integer comparing the two byte arrays +// lexicographically. // The result will be 0 if a==b, -1 if a < b, and +1 if a > b func Compare(a, b []byte) int { for i := 0; i < len(a) && i < len(b); i++ { -- 2.48.1