<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] 和其它語言一樣,名字在Go中是非常重要的。它們甚至還具有語義的效果:一個名字在程序包之外的可見性是由它的首字符是否為大寫來確定的。因此,值得花費一些時間來討論Go程序中的命名約定。 ## 程序包名 當一個程序包被導入,程序包名便可以用來訪問它的內容。在 ~~~ import "bytes" ~~~ 之后,導入的程序包便可以談到`bytes.Buffer`。如果每個使用程序包的人都可以使用相同的名字來引用它的內容,這會是 很有幫助的。這意味著程序包名要很好:簡短,簡明,能引起共鳴的。按照慣例,程序包使用小寫,一個單詞的名字;不需要使用下劃線或者混合大小寫。要力求簡 短,因為每個使用你的程序包的人都將敲入那個名字。不用擔心會與*先前的*有沖突。程序包名只是導入的缺省名字;其不需要在所有源代碼中是唯一的。對于很少出現的沖突情況下,導入的程序包可以選擇一個不同的名字在本地使用。不管怎樣,沖突是很少的,因為導入的文件名確定了所要使用的程序包。 另一種約定是,程序包名為其源目錄的基礎名;在`src/pkg/encoding/base64`中的程序包,是作為`"encoding/base64"`來導入的,但是名字為`base64`,而不是`encoding_base64`或`encodingBase64`。 程序包的導入者將使用名字來引用其內容,因此在程序包中被導出的名字可以利用這個事實來避免口吃現象。(不要使用`import .`標記,這將會簡化那些必須在程序包之外運行,本不應該避免的測試)例如,在`bufio`程序包中的帶緩沖的讀入類型叫做`Reader`,而不是`BufReader`,因為用戶看到的是`bufio.Reader`,一個清晰,簡明的名字。而且,因為被導入的實體總是通過它們的程序包名來尋址,所以`bufio.Reader`和`io.Reader`并不沖突。類似的,為`ring.Ring`創建一個新實例的函數—在Go中是定義一個*構造器*—通常會被叫做`NewRing`,但是由于`Ring`是程序包導出的唯一類型,由于程序包叫做`ring`,所以它只叫做`New`。這樣,程序包的客戶將會看到`ring.New`。使用程序包結構可以幫助你選擇好的名字。 另一個小例子是`once.Do`;`once.Do(setup)`很好讀,寫成`once.DoOrWaitUntilDone(setup)`并不會有所改善。長名字并不會自動使得事物更易讀。具有幫助性的文檔注釋往往會比格外長的名字更有用。 ## Get方法 Go不提供對Get方法和Set方法的自動支持。你自己提供Get方法和Set方法是沒有錯的,通常這么做是合適的。但是,在Get方法的名字中加上`Get`,是不符合語言習慣的,并且也沒有必要。如果你有一個域叫做`owner`(小寫,不被導出),則Get方法應該叫做`Owner`(大寫,被導出),而不是`GetOwner`。對于要導出的,使用大寫名字,提供了區別域和方法的鉤子。Set方法,如果需要,則可以叫做`SetOwner`。這些名字在實際中都很好讀: ~~~ owner := obj.Owner() if owner != user { obj.SetOwner(user) } ~~~ ## 接口名 按照約定,單個方法的接口使用方法名加上“er”后綴來命名,或者類似的修改來構造一個施動者名詞:`Reader`,`Writer`,`Formatter`,`CloseNotifier`等。 有許多這樣的名字,最有效的方式就是尊重它們,以及它們所體現的函數名字。`Read`,`Write`,`Close`,`Flush`,`String`等,都具有規范的簽名和含義。為了避免混淆,不要為你的方法使用這些名字,除非其具有相同的簽名和含義。反過來講,如果你的類型實現了一個和眾所周知的類型具有相同含義的方法,那么就使用相同的名字和簽名;例如,為你的字符串轉換方法起名為`String`,而不是`ToString`。 ## 混合大小寫 最后,Go約定使用`MixedCaps`或者`mixedCaps`的形式,而不是下劃線來書寫多個單詞的名字。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看