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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 4.6\. 類型簡介 Go語言中有一些通用的類型,例如"int"和"float",它們對應的內存大小和處理器類型相關。同時, 也包含了許多固定大小的類型,例如"int8"和"float64",還有無符號類型"uint"和"uint32"等。 需要注意的是,即使"int"和"int32"占有同樣的內存大小,但并不是同一種數據類型。不過 "byte"和"uint8"對應是相同的數據類型,它們是字符串中字符類型。 go中的字符串是一個內建數據類型。字符串雖然是字符序列,但并不是一個字符數組。可以創建新的 字符串,但是不能改變字符串。不過我們可以通過新的字符串來達到想改變字符串的目的。 下面列舉"strings.go"例子說明字符串的常見用法: ``` 11 s := "hello" 12 if s[1] != 'e' { os.Exit(1) } 13 s = "good bye" 14 var p *string = &s 15 *p = "ciao" ``` 不管如何,試圖修改字符串的做法都是被禁止的: ``` s[0] = 'x'; (*p)[1] = 'y'; ``` Go中的字符串和C++中的"const strings"概念類似,字符串指針則相當于C++中的"const strings" 引用。 是的,它們都是指針,但是Go中用法更簡單一些。 數組的聲明如下: ``` var arrayOfInt [10]int; ``` 數組和字符串一樣也是一個值對象,不過數組的元素是可以修改的。不同于C語言的是:"int"類型數組 "arrayOfInt"并不能轉化為"int"指針。因為,在Go語言中數組是一個值對象,它在內部保存"int"指針。 數組的大小是數組類型的一部分。我們還可以通過slice(切片)類型的變量來訪問數組。 首先,數據元素的類型要和slice(切片)類型相同,然后通過"a: high?"類似的 語法來關聯數組的low到heigh-1的子區間元素。Slices和數組的聲明語法類似,但是不像數組那樣 要指定元素的個數(""和"10?"的區別);它在內部引用特定的空間,或者其它數組的空間。 如果多個Slices引用同一個數組,則可以共享數組的空間。但是不同數組之間是無法共享內存空間的。 在Go語言中Slices比數組使用的更為普遍,因為它更有彈性,引用的語法也使得它效率很高。 但是,Slices缺少對內存的絕對控制比數組要差一些。例如你只是想要一個可以存放100個元素 的空間,那么你就可以選擇數組了。創建數組: ``` [3]int{1,2,3} ``` 上面的語句創建一個含有3個元素的int數組。 當需要傳遞一個數組給函數時,你應該將函數的參數定義為一個Slice。這樣,在調用函數的時候, 數組將被自動轉換為slice傳入。 比如以下函數以slices類型為參數(來自"sum.go"): ``` 09 func sum(a []int) int { // returns an int 10 s := 0 11 for i := 0; i < len(a); i++ { 12 s += a[i] 13 } 14 return s 15 } ``` 函數的返回值類型(int)在sum()函數的參數列表后面定義。 為了調用sum函數,我們需要一個slice作為參數。我們先創建一個數組,然后將數組轉為slice類型: ``` s := sum([3]int{1,2,3}[:]) ``` 如果你創建一個初始化的數組,你可以讓編譯器自動計算數組的元素數目,只要在數組大小中填寫"..."就 可以了: ``` s := sum([...]int{1,2,3}[:]) ``` 是實際編碼中,如果不關心內存的具體細節,可以用slice類型(省略數組的大小)來代替數組地址為函數參數: ``` s := sum([]int{1,2,3}); ``` 還有map類型,可以用以下代碼初始化: ``` m := map[string]int{"one":1 , "two":2} ``` 用內建的"len()"函數,可以獲取map中元素的數目,該函數在前面的"sum"中用到過。"len()"函數 還可以用在strings, arrays, slices, maps, 和 channels 中。 還有另外的"range"語法可以用到strings, arrays, slices, maps, 和 channels 中, 它可以用于"for"循環的迭代。例如以下代碼 ``` for i := 0; i &lt; len(a); i++ { ... } ``` 用"range"語法可以寫成: ``` for i, v := range a { ... } ``` 這里的"i"對應元素的索引,"v"對應元素的值。關于更多的細節可以參考 Effective Go。
                  <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>

                              哎呀哎呀视频在线观看