<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之旅 廣告
                切片 1、定義 var 變量名 [] type 與數組的區別,在括號中沒有定義長度 引用類型:值是內存地址的值 2、舉例 var a[]int var a[]string 默認值 a=0 3、切片初始化 var a[]int=a[0:2] 0和2都是下標 4、舉例 var a[5] int var b[]int=a[0:1] var b[]int=a[0:] 0至末尾 var b[]int=a[:4] 5、切片初始化 var b[]int=[]int[1,2,3,4,5] 6、遍歷 a、下標遍歷 b、for....range 7、思考題 var a [5]int var b = a[1:3] a[0] = 100 a[1] = 200 b[0] = ? b[1] = ? var a [5]int var b = a[1:3] b[0] = 100 b[1] = 200 a[0] = ? a[1] = ? 切片類型 8. 切?片的內存布局 ![](https://box.kancloud.cn/37d9ce98b525c68e92d5e05c29fa4489_700x154.png) func Test3(){ var a[5]int b := a[1:3] //越界訪問會panic b[100] = 100 fmt.Printf("b:%#v\n",a) } 9. 切片的好處 func Test4(b []int)(int) { var sum int for i:=0;i<len(b);i++ { sum = sum + b[i] } b[0]=100 return sum } func main (){ result = Test4(a[:]) fmt.Printf("sum:%d\n",result) fmt.Printf("a:%#v\n",a) } 10、切片創建 只能用make內置函數來創建切片 make([]type,len,cap) 類型,長度,容量 make([]type,len) 容量就是等于長度 var b[]int b = make([]int,5,10) 底層創建一個數組 ![](https://box.kancloud.cn/1d019c112d20a02b02089b0d1aec1c9c_709x228.png) 11、make參數len和cap的理解 package main import "fmt" func main() { var a []int = make([]int, 5, 10) a[4] = 100 b := a[0:10] b[9] = 100 fmt.Printf("%v", a) fmt.Printf("%v", b) } 12、切片的copy和append操作 package main import "fmt" func main() { sl := []int{1,2,3} s2 := make([]int, 10) copy(s2, s1) } 將s1的值拷貝至s2里面 package main import "fmt" func main() { sl := []int{1,2,3} s1 = append(s1, 1, 2,3) } append只接收單個元素 s5 := append(s3,s4...) 此種方式可以將s4的值追加到s3后面 s4... 省略號是將s4的切片展開 13、字符串的內存布局 字符串的底層是切片 ,byte類型的數組 ![](https://box.kancloud.cn/3d14364a2f25ff532c232ad468ea2eeb_480x285.png) 字符串是只讀的。修改字符串需要將字符串轉換成切片,然后將切片下標的值進行定義,再重新定義字符串。 ~~~ func tstrslice() { var str = "hello world" var b []byte = []byte(str) b[0] = 'a' str1 := string(b) fmt.Printf("str1:%s\n",str1) } ~~~ 將一個字符串進行首尾互換 ~~~ func testStrReverse2() { str := "hello world" b := []byte(str) for i:=0;i<len(b)/2;i++ { b[i],b[len(b)-i-1] = b[len(b)-i-1],b[i] } str1 := string(b) fmt.Printf("%v\n",str1) } ~~~ 對中文的處理 ~~~ func testStrReverse2utf8() { str := "hello world我愛你" b := []rune(str) for i:=0;i<len(b)/2;i++ { b[i],b[len(b)-i-1] = b[len(b)-i-1],b[i] } str1 := string(b) fmt.Printf("%v\n",str1) } ~~~ rune 類型是表示一個utf8的字符
                  <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>

                              哎呀哎呀视频在线观看