<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] <br> <br> >[success] ## **1:寫文件實例操作** ### **1:基本介紹** ``` func OpenFile(name [string](string), flag [int](int), perm [FileMode](FileMode) (file *[File](File), err [error](error)) ``` **說明**: os.OpenFile是\-一個更一般性的文件打開函數,它會使用指定的選項(如 O_RDONLY等) 、指定的模式(如0666等)打開指定名稱的文件。如果操作成功,返 回的文件對象可用于I/0。如果出錯,錯誤底層類型是\*PathError. <br> **OpenFile參數說明:** 1,name ? string:要打開的文件路徑 2,flag ??? int :文件的打開模式(可以組合) 3,perm FileMode:文件是什么權限控制的 <br> **第二個參數**:文件打開模式;如下 const ( ????O\_RDONLY int = syscall.O\_RDONLY // 只讀模式打開文件 ????O\_WRONLY int = syscall.O\_WRONLY // 只寫模式打開文件 ????O\_RDWR ??int = syscall.O\_RDWR ??// 讀寫模式打開文件 ????O\_APPEND int = syscall.O\_APPEND // 寫操作時將數據附加到文件尾部 ????O\_CREATE int = syscall.O\_CREAT ?// 如果不存在將創建一個新文件 ????O\_EXCL ??int = syscall.O\_EXCL ??// 和O\_CREATE配合使用,文件必須不存在 ????O\_SYNC ??int = syscall.O\_SYNC ??// 打開文件用于同步I/O ????O\_TRUNC ?int = syscall.O\_TRUNC ?// 如果可能,打開時清空文件 ) **第三個參數**:打開文件權限 注意:FileMode在windows下是不管用,只有在liunx或unix下面才管用 ![](https://img.kancloud.cn/62/9a/629a2c2503b25d2f34f67a4b29b0a7d6_988x720.png) <br> <br> >[success] ## **2:寫文件方式一** 1)**創建一個新文件,寫入內容5句**"hello, Gardon" ![](https://img.kancloud.cn/a2/b3/a2b352a37ebf95094611e08eb9c9c011_981x720.png) <br> 2)打開一個存在的文件中,**將原來的內容覆蓋成新的內容**10句"jeson 要挺住!" ![](https://img.kancloud.cn/ba/9a/ba9a33fbc0c838dc9e97e57e07437d20_1183x720.png) <br> 3)打開一個存在的文件,在原來的內容**追加內容**'ABC! ENGLISH!' 例如日志 ![](https://img.kancloud.cn/f4/ee/f4ee8f938cb8b1d7d2db987ddc1202ad_1102x720.png) <br> 4)打開一個存在的文件,將原來的內容讀出顯示在終端,并且追加3句話" ![](https://img.kancloud.cn/20/8b/208b02b24b9f7fd6f769dc758172b447_744x720.png) 使用os.OpenFile(), bufio.NewWriter(), \*Writer的方法WriteString完成上面的任務,**帶緩沖方法** <br> <br> >[success] ## **3:寫文件方式二** 案例如下: 編程一個程序,將一個文件的內容,寫入到另外一個文件。注:這兩個文件已經存在了 >:將src/Go\_project/Open/bufiotest文件中的內容寫入 src/Go\_project/Open/bufiotest2 說明: 1)使用ioutil.ReadFile / ioutil.WriteFile完成寫文件的任務. ![](https://img.kancloud.cn/3a/43/3a43a45763e8d30150075e490e31e5c0_1272x720.png) <br> <br> >[success] ## **4:判斷文件是否存在** golang判斷文件或文件夾是否存在的方法為使用**os.Stat()**函數返回的錯誤值進行判斷: 1)如果返回的錯誤為nil,說明文件或文件夾存在 2)如果返回的錯誤類型使用**os.IsNotExist()**判斷為true,說明文件或文件夾不存在 3)如果返回的錯誤為其它類型,則不確定是否在存在 ![](https://img.kancloud.cn/75/11/75114ddb9993512afb806e29e19c086d_1280x237.png) ![](https://img.kancloud.cn/69/65/6965b4791fc784c1632628df943476e5_1280x233.png) <br> <br> >[success] ## **5:文件拷貝** ![](https://img.kancloud.cn/86/80/868059210529508c9468b4b11b7cf105_1280x351.png) **注意:** copy函數是io包實現的 ![](https://img.kancloud.cn/ba/f7/baf713fbfd6f0d841c0a5be0b71f11d4_775x720.png) <br> <br> >[success] ## **6:文件統計** 說明:統計一個文件中含有的英文、數字、空格及其它字符數量。 ![](https://img.kancloud.cn/be/4d/be4d9e12abf7fb54a7c10f7995e411e4_997x720.png) ![](https://img.kancloud.cn/d9/41/d941fe914ac725d53379338ffe412bf8_1280x619.png) <br> <br> >[success] ## **7:flag命令解析** ### **1:基本介紹** ``` [func StringVar(p *string, name string, value string, usage string)](StringVar) ``` ![](https://img.kancloud.cn/ba/e2/bae282f3b251c1dabf5c5f17cbf2b219_1280x237.png) ![](https://img.kancloud.cn/d8/bf/d8bf636d1b2a57f95b49cb1cda3ff60d_1280x253.png) ![](https://img.kancloud.cn/31/f0/31f0ceade42961262e1dcd8af2f7d87c_1280x247.png) 主要是來獲取終端的參數命令,例如mysql的登錄 mysql -u root -p 3306 -h127.0.0.1 flag包就是來獲取\-u 和 \-p -h后面的參數,而且使用flag包,不需要按照固定死的寫法來寫,我們可以將key value的前后順序打亂,例如:mysql -p 3306 -u root ........ ### **2:案例演示** ![](https://img.kancloud.cn/7a/04/7a043819aa6ae24a1921add9a3f92ec0_1280x586.png) 命令行參數使用提示: ![](https://img.kancloud.cn/4d/70/4d7009e01445334b92b2ae5249a6943e_1280x374.png) <br> <br> >[success] ## 8:json(JavaScript Object Notation) ### **1:json基本介紹** JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。key-val JSON是在2001年開始推廣使用的數據格式,目前已經成為主流的數據格式。 JSON易于機器解析和生成,并有效地提升**網絡傳輸效率**,通常程序在網絡傳輸時會先將**數據(結構體、map等)序列化成json字符串到接收方得到json字符串時,在反序列化恢復成原來的數據類型(結構體、map等)** 這種方式已然成為各個語言的標準。 ![](https://img.kancloud.cn/5b/ad/5bad5dcf7ba0dd8229b17fd18590688e_1280x497.png) ### **2:json數據格式** 在JS語言中,一切都是對象。因此,任何支持的類型都可以通過JSON來表示,例如字符串、數字、對象、數組等. JSON鍵值對是用來保存數據一種方式, 鍵/值對組合中的鍵名寫在前面并用雙引號""包裹,使用冒號:分隔,然后緊接著值: ``` { ????"code":1, ????"msg":"success", ????"data":{ ????????"name":"pig", ????????"age":"18", ????????"sex":"man", ????????"hometown":{ ????????????"province":"江西省", ????????????"city":"撫州市", ????????????"county":"崇仁縣" ????????} ????} } ``` ### **3:Marshal()與unmarshal** Json Marshal:將數據編碼成json字符串(序列化) Json Unmarshal:將json字符串解碼到相應的數據結構(反序列化) **應用實例如下**: ![](https://img.kancloud.cn/0c/59/0c59ae077c44af12f041e26aa154560b_1280x353.png) ![](https://img.kancloud.cn/94/88/94885bf56f65ad759df044755bd7944a_1280x302.png) ![](https://img.kancloud.cn/f4/6a/f46ac35c557714926a39c144590b41f5_909x720.png) <br> <br> ### **4:使用json tag指定字段名** 序列化與反序列化默認情況下使用結構體的字段名,我們可以通過給結構體字段添加tag來指定json序列化生成的字段名 案例如下: ![](https://img.kancloud.cn/bb/a8/bba83a03a7561ba64dfb65e7e5cce757_1280x250.png) ### **5:json的序列化** json序列化是指,將有**key-value**?結構的數據類型(比如結構體、map、切片)序列化成json字符串 這里我們介紹一下**結構**體,**map**和**切片**的序列化 **序列化方法:官網解釋如下:** **func?[Marshal]** **func Marshal(v interface{}) (\[\]byte, error)** Marshal函數返回v的json編碼。 Marshal函數會遞歸的處理值。如果一個值實現了Marshaler接口切非nil指針,會調用其MarshalJSON方法來生成json編碼。nil指針異常并不是嚴格必需的,但會模擬與UnmarshalJSON的行為類似的必需的異常。 否則,Marshal函數使用下面的基于類型的默認編碼格式: 布爾類型編碼為json布爾類型。 浮點數、整數和Number類型的值編碼為json數字類型。 字符串編碼為json字符串。角括號""會轉義為"\\u003c"和"\\u003e"以避免某些瀏覽器吧json輸出錯誤理解為HTML。基于同樣的原因,"&"轉義為"\\u0026"。 數組和切片類型的值編碼為json數組,但\[\]byte編碼為base64編碼字符串,nil切片編碼為null。 結構體的值編碼為json對象。每一個導出字段變成該對象的一個成員。 * [ ] 自己解釋:Marshal方法接受一個interface,而我們在學方法時曾說過,接受類型是**interface可以接受任何數據類型**,Marshal方法返回兩個參數,**一個byte切片,一個error報錯** * [ ] **注意:Marshal內部會做一個判斷,如果該v中的字段可以用則序列化,不可以用(例如小寫)則不取出--------Marshal內部有反射機制** **5.1:結構體序列化:** ![](https://img.kancloud.cn/47/5d/475d432f1c73d126e584fc60bf858e4e_1280x709.png) **5.2:map序列化** ![](https://img.kancloud.cn/41/b6/41b687a7d8caa82b9238d17753e8d2ea_1280x465.png) **5.3:Slice序列化** ![](https://img.kancloud.cn/9a/6c/9a6c9d51e3681465169a9205529d3c10_1022x720.png)
                  <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>

                              哎呀哎呀视频在线观看