<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 自增和自減 golang里包含其他語言常用的自增i++ 和自減i--,但是在golang里他們是語句而不是表達式,所以j=i++這種是錯誤的寫法,而且golang也不支持++和--放在變量前面如++i的形式。 ~~~ i++ // i的值+1 i-- // i的值-1 ++i //錯誤 --i // 錯誤 j = i-- //錯誤 ~~~ # 短變量聲明只能在函數內部不能再外部 ~~~ s := "" //錯誤 func main() { s := "" prinltln(s) } ~~~ # new只是一個預定義的函數,它并不是一個關鍵字 ~~~ func delta(old, new int) int { return new - old } // 函數內無法調用new函數, ~~~ # golang 對Unicode標示的支持 對于中文漢字,Unicode標志都作為小寫字母處理,因此中文的命名默認不能導出;不過國內的用戶針對該問題提出了不同的看法,根據RobPike的回復,在Go2中有可能會將中日韓等字符當作大寫字母處理。 # golang 函數參數都是值的傳遞,所以無法修改實參的值 實參通過值的方式傳遞,因此函數的形參是實參的拷貝。對形參進行修改不會影響實參。但是,如果實參包括引用類型,如指針,slice(切片)、map、function、channel等類型,實參可能會由于函數的簡介引用被修改。 # defer是return語句執行后執行的,所以可以修改返回值 ~~~ func triple(x int) (result int) { defer func() { result += x }() return double(x) } fmt.Println(triple(4)) // "12" ~~~ # golang里任何類型都可以聲明變量? golang里除了指針和interface其他類型都可以聲明變量。 ~~~ type test []int func (t test)hello() { // 合法 fmt.Println("hello") } ~~~ # 一個包含nil指針的接口不是nil接口 一個不包含任何值的nil接口值和一個剛好包含nil指針的接口值是不同的。這個細微區別產生了一個容易絆倒每個Go程序員的陷阱。 思考下面的程序。當debug變量設置為true時,main函數會將f函數的輸出收集到一個bytes.Buffer類型中。 ~~~ const debug = true func main() { var buf *bytes.Buffer if debug { buf = new(bytes.Buffer) // enable collection of output } f(buf) // NOTE: subtly incorrect! if debug { // ...use buf... } } // If out is non-nil, output will be written to it. func f(out io.Writer) { // ...do something... if out != nil { out.Write([]byte("done!\n")) } } ~~~ 我們可能會預計當把變量debug設置為false時可以禁止對輸出的收集,但是實際上在out.Write方法調用時程序發生了panic: ~~~ if out != nil { out.Write([]byte("done!\n")) // panic: nil pointer dereference } ~~~ 當main函數調用函數f時,它給f函數的out參數賦了一個bytes.Buffer的空指針,所以out的動態值是nil。然而,它的動態類型是bytes.Buffer,意思就是out變量是一個包含空指針值的非空接口(如圖7.5),所以防御性檢查out!=nil的結果依然是true。
                  <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>

                              哎呀哎呀视频在线观看