<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] ## 概述 通常我們會給每個產品環境設置不同的配置,比如 redis 要在開發環境就連接 localhost:6379,測試環境可能連接某一個主機的 redis。 有個方法可以解決,就是配置文件。但是我利用`golang`的`build tags`來解決。 如果放在 go 里面是否可行?因為 go 是編譯二進制包,也沒有動態加載這么一說,那怎么實現? ## build tags自定義配置 這個可以使用 build tags 來自定義配置。 假設我們現在有兩個環境,dev 和 prod,那么我們可以新建一個 config 文件夾,放入 dev.go 和 prod.go 兩個文件,分別寫入對應的配置,如下所示。**同一個包,同樣的變量名,但是不會因為重復聲明和報錯,因為這里加了 tag**,如下所示: ``` // +build dev package config // config list const ( Redis = "redis://127.0.0.1:6379/0" ) ``` ``` // +build prod package config const ( Redis = "redis://192.168.0.1:6379" ) ``` 在 main 包引入嘗試以下: ``` $ go build -o=test -tags=dev . $ ./test redis://127.0.0.1:6379/0 $ go build -o=test -tags=prod . $ ./test redis://192.168.0.1:6379 ``` 可以了! gin-gonic 也有一個編譯指令,用于把 encoding/json 包替換為處理速度更快 jsoniter 包,也是使用的構建 tag:`$ go build -tags=jsoniter .`,實現也很簡單,一個加上`// +build jsoniter`另一個默認使用`// +build !jsoniter`。 這里 tag 前加上 ! 就代表非構建指令下的配置。 tag 常用于交叉編譯的配置,例如有些文件針對 linux 而有些文件針對 windows,底層使用的系統調用是不同的,go 源碼就包含了很多這樣的構建指令: 一行中使用空格就代表“或”的關系,下面指的是在`linux`或者`darwin`環境中使用。 ``` // +build linux darwin ``` 如果要指定“與”的關系,那么可以使用`,`,下面就是指使用 “linux” 和 “cgo” 兩個環境同時滿足才使用。 ``` // +build linux,cgo ``` 當然可以分成多行,下面的指令表述和上面一致: ``` // +build linux // +build cgo ``` 更多還有 ignore 指令來忽略使用這個文件,更多可以查看[官方文檔](https://golang.org/pkg/go/build/#hdr-Build_Constraints)
                  <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>

                              哎呀哎呀视频在线观看