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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                在學習本書第二部分和第三部分時,我們經常在一個表達式返回2個參數時使用這種模式:`,ok`,第一個參數是一個值或者`nil`,第二個參數是`true`/`false`或者一個錯誤`error`。在一個需要賦值的`if`條件語句中,使用這種模式去檢測第二個參數值會讓代碼顯得優雅簡潔。這種模式在go語言編碼規范中非常重要。下面總結了所有使用這種模式的例子: (1)在函數返回時檢測錯誤(參考[第5.2小節](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/05.2.md)): ~~~ value, err := pack1.Func1(param1) if err != nil { fmt.Printf(“Error %s in pack1.Func1 with parameter %v”, err.Error(), param1) return err } // 函數Func1沒有錯誤: Process(value) e.g.: os.Open(file) strconv.Atoi(str) ~~~ 這段代碼中的函數將錯誤返回給它的調用者,當函數執行成功時,返回的錯誤是`nil`,所以使用這種寫法: ~~~ func SomeFunc() error { … if value, err := pack1.Func1(param1); err != nil { … return err } … return nil } ~~~ 這種模式也常用于通過`defer`使程序從`panic`中恢復執行(參考[第17.2(4)小節](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/17.2.md))。 要實現簡潔的錯誤檢測代碼,更好的方式是使用閉包,參考[第16.10.2小節](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/16.10.md) (2)檢測映射中是否存在一個鍵值(參考[第8.2小節](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/08.2.md)):`key1`在映射`map1`中是否有值? ~~~ if value, isPresent = map1[key1]; isPresent { Process(value) } // key1不存在 … ~~~ (3)檢測一個接口類型變量`varI`是否包含了類型`T`:類型斷言(參考[第11.3小節](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/11.3.md)): ~~~ if value, ok := varI.(T); ok { Process(value) } // 接口類型varI沒有包含類型T ~~~ (4)檢測一個通道`ch`是否關閉(參考[第14.3小節](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/14.3.md)): ~~~ for input := range ch { Process(input) } ~~~ 或者: ~~~ for { if input, open := <-ch; !open { break // 通道是關閉的 } Process(input) } ~~~
                  <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>

                              哎呀哎呀视频在线观看