<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] ### 結構體的比較: * 結構體只能比較是否相等,但是不能比較大小。 * 相同類型的結構體才能夠進行比較,結構體是否相同不但與屬性類型有關,還與屬性順序相關 * 如果 struct 的所有成員都可以比較,則該 struct 就可以通過 == 或 != 進行比較是否相等,比較時逐個項進行比較,如果每一項都相等,則兩個結構體才相等,否則不相等; ~~~ 可比較類型:常見的有 bool、數值型、字符、指針、數組 不可比較類型:切片、map、函數 ~~~ ### 類型設置 ![](https://img.kancloud.cn/ff/65/ff65772ed1a0d4bd04df12a43329a210_1445x487.png) ### nil賦值 nil 只能賦值給指針、chan、func、interface、map 或 slice 類型的變量 ### 類型斷言 ![](https://img.kancloud.cn/93/ac/93ac6ba3e28159ccbee0a216b6610deb_1202x422.png) 只有接口類型才有類型斷言 ### cap ![](https://img.kancloud.cn/0a/e6/0ae699615ba0b17bc11da204299a8036_535x250.png) channle 的cap就是緩沖,make(chan int,1),cap=1 array 的cap和len 一致 slice 在沒有設置cap時候,和長度一致 ### go中字符串是只讀的 ![](https://img.kancloud.cn/5a/44/5a44ff963acd128a6abc28d98cf27fa4_500x337.png) ### 多重賦值 ![](https://img.kancloud.cn/13/36/13362e12b6ce745a3795637c7f1108fc_687x450.png) ### const 常量不能取地址 ![](https://img.kancloud.cn/d1/c7/d1c726e1803f77f85416d9c49ac09b69_1245x246.png) ### slice的for range遍歷 ![](https://img.kancloud.cn/a8/a6/a8a6fc0cb27ede281d22d914cd6abdda_442x359.png) 如果是map,也是僅輸出索引部分 ### 不能使用短變量聲明結構體 ![](https://img.kancloud.cn/57/73/5773f9fa0bca02cfea4a43805c3787c8_476x616.png) ### 簡短聲明的變量需要注意啥 * 簡短聲明的變量只能在函數內部使用 * struct 的變量字段不能使用 := 來賦值 * 不能用簡短聲明方式來單獨為一個變量重復聲明, := 左側至少有一個新變量,才允許多變量的重復聲明 ### 切片和數組的區別 數組: 1、數組是具有固定長度,且擁有零個或者多個,相同數據類型元素的序列。 2、數組的長度是數組類型的一部分,所以\[3\]int 和 \[4\]int 是兩種不同的數組類型。 3、數組需要指定大小,不指定也會根據初始化的自動推算出大小,不可改變;數組是值傳遞。數組是內置類型,是一組同類型數據的集合,它是值類型,通過從0開始的下標索引訪問元素值。在初始化后長度是固定的,無法修改其長度。 4、當作為方法的參數傳入時將復制一份數組而不是引用同一指針。數組的長度也是其類型的一部分,通過內置函數len(array)獲取其長度 切片: 1、切片表示一個擁有相同類型元素的可變長度的序列。 2、切片是一種輕量級的數據結構,它有三個屬性:指針、長度和容量。 3、切片不需要指定大小; 4、切片是地址傳遞; 5、切片可以通過數組來初始化,也可以通過內置函數make()初始化 。初始化時len=cap,在追加元素時如果容量cap不足時將按len的2倍擴容 ### for循環 for 循環支持 continue 和 break 來控制循環,但是它提供了一個更高級的break,可以選擇中斷哪一個循環 for 循環不支持以逗號為間隔的多個賦值語句,必須使用平行賦值的方式來初始化多個變量。 ### go語言中的switch語句 單個 case 中,可以出現多個結果選項。只有在 case 中明確添加 fallthrough關鍵字,才會繼續執行緊跟的下一個 case。 ### go語言中的引用類型包含哪些 數組切片、字典(map)、通道(channel)、接口(interface) ### go語言的main函數 * main 函數不能帶參數;main 函數不能定義返回值。 * main 函數所在的包必須為 main 包;main 函數中可以使用 flag 包來獲取和解析命令行參數。 ### go語言的select機制 * select 機制用來處理異步 IO 問題 * select 機制最大的一條限制就是每個 case 語句里必須是一個 IO 操作 * golang 在語言級別支持 select 關鍵字 ### go的接口是什么 * 在 go 語言中,interface 也就是接口,被用來指定一個對象。接口具有下面的要素: * 一系列的方法 * 具體應用中并用來表示某個數據類型 * 在 go 中使用 interface 來實現多態 ### Go語言里面的類型斷言是怎么回事 類型斷言是用來從一個接口里面讀取數值給一個具體的類型變量。類型轉換是指轉換兩個不相同的數據類型。 ### Golang Slice的底層實現 切片是基于數組實現的,它的底層是數組,它自己本身非常小,可以理解為對底層數組的抽象。因為基于數組實現,所以它的底層的內存是連續分配的,效率非常高,還可以通過索引獲得數據,可以迭代以及垃圾回收優化。 切片本身并不是動態數組或者數組指針。它內部實現的數據結構通過指針引用底層數組,設定相關屬性將數據讀寫操作限定在指定的區域內。切片本身是一個只讀對象,其工作機制類似數組指針的一種封裝。 切片對象非常小,是因為它是只有3個字段的數據結構: * 指向底層數組的指針 * 切片的長度 * 切片的容量 這3個字段,就是Go語言操作底層數組的元數據。 ![](https://img.kancloud.cn/01/6c/016c6e325510b0a8cfc6a7d3b6ddb8fb_881x280.png) ### Golang Slice的擴容機制,有什么注意點 首先判斷,如果新申請容量大于 2 倍的舊容量,最終容量就是新申請的容量。否則判斷,如果舊切片的長度小于 1024,則最終容量就是舊容量的兩倍。 否則判斷,如果舊切片長度大于等于 1024,則最終容量從舊容量開始循環增加原來的 1/4 , 直到最終容量大于等于新申請的容量。如果最終容量計算值溢出,則最終容量就是新申請容量。 情況一:原數組還有容量可以擴容(實際容量沒有填充完),這種情況下,擴容以后的數組還是指向原來的數組,對一個切片的操作可能影響多個指針指向相同地址的Slice。 情況二:原來數組的容量已經達到了最大值,再想擴容, Go 默認會先開一片內存區域,把原來的值拷貝過來,然后再執行 append() 操作。這種情況絲毫不影響原數組。 要復制一個Slice,最好使用Copy函數。 ### Golang Map底層實現??? Golang 中 map 的底層實現是一個散列表,因此實現 map 的過程實際上就是實現散表的過程。 在這個散列表中,主要出現的結構體有兩個,一個叫hmap(a header for a go map),一個叫bmap(a bucket for a Go map,通常叫其bucket)。
                  <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>

                              哎呀哎呀视频在线观看