<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      PHP轉Go系列:字符串

      字符串的賦值

      在PHP中,字符串的賦值雖然只有一行,其實包含了兩步,一是聲明變量,二是賦值給變量,同一個變量可以任意重新賦值。

      $str = 'Hello World!';
      $str = 'hia';
      

      Go語言實現上述兩步也可以用一行語句解決,就是通過標識var賦值時同時聲明變量,切記等號右側的字符串不能用單引號,對變量的后續賦值也不能再重新聲明,否則會報錯。除此之外,定義的變量不使用也會報錯,從這點來看,Go還是比PHP嚴格很多的,規避了很多在開發階段產生的性能問題。

      var str = "Hello World!"
      str = "hia"
      

      關于聲明,Go提供了一種簡化方式,不需要在行首寫var,只需將等號左側加上一個冒號就好了,切記這只是替代了聲明語句,它并不會像PHP那樣用一個賦值符號來統一所有的賦值操作。

      str := "Hello World!"
      str = "hia"
      

      字符串的輸出

      PHP中的輸出非常簡單,一個echo就搞定了。

      <?php
          echo 'Hello World!';
      ?>
      

      而Go不一樣的是,調用它的輸出函數前需要先引入包fmt,這個包提供了非常全面的輸入輸出函數,如果只是輸出普通字符串,那么和PHP對標的函數就是Print了,從這點來看,Go更有一種萬物皆對象的感覺。

      import "fmt"
      
      func main() {
      	fmt.Print("Hello world!")
      }
      

      在PHP中還有一個格式化輸出函數sprintf,可以用占位符替換字符串。

      echo sprintf('name:%s', '平也');  //name:平也
      

      在Go中也有同名同功能的字符串格式化函數。

      fmt.Print(fmt.Sprintf("name:%s", "平也"))
      

      官方提供的默認占位符有以下幾種,感興趣的同學可以自行了解。

      bool:                    %t
      int, int8 etc.:          %d
      uint, uint8 etc.:        %d, %#x if printed with %#v
      float32, complex64, etc: %g
      string:                  %s
      chan:                    %p
      pointer:                 %p
      

      字符串的相關操作

      字符串長度

      在PHP中通過strlen計算字符串長度。

      echo strlen('平也');  //output: 6
      

      在Go中也有類似函數len

      fmt.Print(len("平也"))   //output: 6
      

      因為統計的是ASCII字符個數或字節長度,所以兩個漢字被認定為長度6,如果要統計漢字的數量,可以使用如下方法,但要先引入unicode/utf8包。

      import (
      	"fmt"
      	"unicode/utf8"
      )
      
      func main() {
      	fmt.Print(utf8.RuneCountInString("平也"))    //output: 2
      }
      

      字符串截取

      PHP有一個substr函數用來截取任意一段字符串。

      echo substr('hello,world', 0, 3); //output: hel
      

      Go中的寫法有些特別,它是將字符串當做數組,截取其中的某段字符,比較麻煩的是,在PHP中可以將第二個參數設置為負數進行反向取值,但是Go無法做到。

      str := "hello,world"
      fmt.Print(str[0:3])  //output: hel
      

      字符串搜索

      PHP中使用strpos查詢某個字符串出現的位置。

      echo strpos('hello,world', 'l'); //output: 2
      

      Go中需要先引入strings包,再調用Index函數來實現。

      fmt.Print(strings.Index("hello,world", "l")) //output: 2
      

      字符串替換

      PHP中替換字符串使用str_replace內置函數。

      echo str_replace('world', 'girl', 'hello,world'); //output: hello,girl
      

      Go中依然需要使用strings包中的函數Replace,不同的是,第四個參數是必填的,它代表替換的次數,可以為0,代表不替換,但沒什么意義。還有就是字符串在PHP中放在第三個參數,在Go中是第一個參數。

      fmt.Print(strings.Replace("hello,world", "world", "girl", 1)) //output: hello,girl
      

      字符串連接

      在PHP中最經典的就是用點來連接字符串。

      echo 'hello' . ',' . 'world'; //output: hello,world
      

      在Go中用加號來連接字符串。

      fmt.Print("hello" + "," + "world") //output: hello,world
      

      除此之外,還可以使用strings包中的Join函數連接,這種寫法非常類似與PHP中的數組拼接字符串函數implode

      str := []string{"hello", "world"}
      fmt.Print(strings.Join(str, ",")) //output: hello,world
      

      字符串編碼

      PHP中使用內置函數base64_encode來進行編碼。

      echo base64_encode('hello, world'); //output: aGVsbG8sIHdvcmxk
      

      在Go中要先引入encoding/base64包,并定義一個切片,再通過StdEncoding.EncodeToString函數對切片編碼,比PHP要復雜一些。

      import (
      	"encoding/base64"
      	"fmt"
      )
      
      func main() {
      	str := []byte("hello, world")
      	fmt.Print(base64.StdEncoding.EncodeToString(str))
      }
      

      以上是PHP與Go在常用的字符串處理場景中的區別,感興趣的同學可以自行了解。

      posted @ 2019-06-10 21:33  MARIOOW  閱讀(1720)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 精品三级在线| 国产精品视频露脸| 91人妻无码成人精品一区91| av鲁丝一区鲁丝二区鲁丝三区| 草裙社区精品视频播放| 无码日韩做暖暖大全免费不卡| 久久久精品国产精品久久| 国产福利社区一区二区| 久久亚洲色www成人| 国产在线观看黄| 国产成人午夜在线视频极速观看 | 国内精品无码一区二区三区| 国产欧美日韩视频一区二区三区| 4虎四虎永久在线精品免费| 欧美成人精品三级网站| 欧美成人精品手机在线| 国产综合av一区二区三区| 无码日韩精品一区二区三区免费| 乌克兰丰满女人a级毛片右手影院| 日韩精品亚洲专在线电影| 最近2019免费中文字幕8| 亚洲国产综合性亚洲综合性| 无码熟妇人妻av在线电影| 国产精品一区二区小视频| 中文字幕人妻av12| 亚洲天堂av日韩精品| 成人特黄特色毛片免费看| 成人精品天堂一区二区三区| 日韩av不卡一区二区在线| 无线日本视频精品| 成人国产亚洲精品天堂av| 97人洗澡人人澡人人爽人人模| 东京热无码国产精品| 亚洲天堂伊人久久a成人| 欧美视频二区欧美影视| 国产中文字幕一区二区| 香蕉亚洲欧洲在线一区| 免费人成视频在线视频电影| 久久国产乱子伦免费精品无码| 亚洲色婷婷综合开心网| 国产欧美va欧美va在线|