日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

go語言中關于字符串使用的總結

 

Go語言標準庫中對于字符串的操作很完善,以下簡單總結一下字符串的操作

一、字符串只能用雙引號定義

二、go里單引號和雙引號不通過,可以使用`` 號來定義原始輸出,不會進行轉義,相當于Python 里的三引號

package main
import "fmt"
func main() {
 name := "楊彥星n"
 s := `楊
 adgfgfg
 nt
 `
 fmt.Println(name,s)
}

輸出

楊彥星
楊
 adgfgfg
 nt

三、字符串是不可改變的

我們說字符串是不可變的指的是字符串內部?用指針指向 UTF-8 字節數組,所指向的字節數組不能單獨改變。并不是指字符串指向一個新的UTF-8數組

package main
import "fmt"
func main() {
 var name string
 var name1 = []byte("yangyanxing漢字")
 name = string(name1)
 fmt.Println(&name,name)
 name = "楊彥星" //這個是可以的
 fmt.Println(&name) //name 的地址不會改變
 //非法
 //name[0] = "a"
}

如果想要改變字符串中的值需要先將字符串轉為字節數組([]byte)或者字符數組([]rune),有中文的情況下使用字符數組

package main
import "fmt"
func main() {
 var name = "yangyanxing"
 fmt.Println(&name,name)
 names := []byte(name)
 //字節數組需要使用單引號,雙引號是字符串了
 names[0] = 'f' 
 fmt.Println(&name,string(names))
 name = "楊彥星" //這個是可以的
 //如果有漢字的話需要使用字符數組
 namer := []rune(name)
 //需要使用單引號
 namer[0] = '飯'
 //name 的地址不會改變
 fmt.Println(&name,string(namer)) 
}

四、字符串與字節數組與字符數組的相互轉換

package main
import "fmt"
func main() {
 var name = "yangyanxing"
 fmt.Println(&name,name)
 names := []byte(name)
 fmt.Printf("%Tn",names)
 names[0] = 'f' //字節數組需要使用單引號,雙引號是字符串了
 name = string(names)
 fmt.Println(&name,name)
 name = "楊彥星"
 //如果有漢字的話需要使用字符數組
 namer := []rune(name)
 fmt.Printf("%Tn",namer)
 namer[0] = '飯'
 name = string(namer)
 fmt.Println(&name,name) //name 的地址不會改變
}

五、字符串的遍歷

字符串可以按字節或者字符來遍歷

package main
import "fmt"
func main() {
 var name = "yang楊彥星"
 //按字節遍歷
 for i:=0;i<len(name);i++{
 fmt.Printf("%v %T:%vn",i,name[i],name[i])
 }
 fmt.Println("")
 //按字符遍歷
 for _,r := range name{
 //%c 為輸出數值所表示的 Unicode 字符,不帶單引號 如 y
 //%q 輸出數值所表示的 Unicode 字符(帶單引號)如 '楊'
 fmt.Printf("%c",r)
 }
}

結果為

0 uint8:121
1 uint8:97
2 uint8:110
3 uint8:103
4 uint8:230
5 uint8:157
6 uint8:168
7 uint8:229
8 uint8:189
9 uint8:166
10 uint8:230
11 uint8:152
12 uint8:159
yang楊彥星
Process finished with exit code 0

六、字符串的拼接

可以直接使用 + 拼接

package main
import "fmt"
func main() {
 //字符串可以使用+進行拼接
 var name = "yang" + "yan" + "xing"
 fmt.Println(name)
 //使用+=在原字符串后面追加字符串
 name += "楊彥星"
 fmt.Println(name)
 // + 不能在行首,只能寫在行尾,就和if else中的else那樣
 s := "BeiJing" +
 " TongZhou"
 fmt.Println(s)
}

在循環中使用 + 號進行拼接并不是高效的方法,可以使用strings.Join方法

package main
import (
 "fmt"
 "strings"
)
func main() {
 var names = []string{"yang","fan","zhang","li","chen"}
 n := strings.Join(names," ")
 fmt.Println(n)
 s := "yang&aaa&bbb&ccc"
 //以&分割
 str := strings.Split(s,"&")
 fmt.Println(str)
}

結果

yang fan zhang li chen
[yang aaa bbb ccc]

strings包的常用方法

該包提供了字符串操作的常用方法

package main
import (
 "fmt"
 "strings"
)
func main() {
 s := "yang& yan&xing"
 //HasPrefix 判斷字符串 s 是否以 prefix 開頭
 fmt.Println(strings.HasPrefix(s,"y"))
 //HasSuffix 判斷字符串 s 是否以 suffix 結尾
 fmt.Println(strings.HasSuffix(s,"aaa"))
 //Contains 判斷字符串 s 是否包含 substr
 fmt.Println(strings.Contains(s,"yang"))
 //Replace替換字符串,最后一個參數為數量,-1為替換全部
 fmt.Println(strings.Replace(s,"y","Y",-1))
 //ToLower 將字符串中的 Unicode 字符全部轉換為相應的小寫字符
 ss := "AAA楊彥星BbbbB"
 fmt.Println(strings.ToLower(ss))
 //ToUpper 將字符串中的 Unicode 字符全部轉換為相應的大寫字符
 fmt.Println(strings.ToUpper(ss))
 //strings.TrimSpace(s) 來剔除字符串開頭和結尾的空白符號
 //中間的不能刪除
 sp := " aaa bbb ccc "
 fmt.Println(strings.TrimSpace(sp))
 //還可以去除開頭或者結尾指定的字符
 ssp := "aaa Hey, how are you George?aaaa"
 fmt.Println(strings.TrimLeft(ssp,"He"))
 fmt.Println(strings.TrimRight(ssp,"ge"))
 fmt.Println(strings.Trim(ssp,"aaa"))
 //strings.Fields(s) 將會利用
 //strings.Split(s, sep) 用于自定義分割符號來對指定字符串進行分割
 sp2 := " aa a b bb ccc "
 fmt.Println(strings.Fields(sp2))
 fmt.Println(strings.Split(sp2," ")) //使用空格分割
 //Join 用于將元素類型為 string 的 slice 使用分割符號來拼接組成一個字符串
 sp3 := []string{"aa","a","b","bb","ccc"}
 fmt.Println(strings.Join(sp3,"%%%"))
}

結果

true
false
true
Yang& Yan&xing
aaa楊彥星bbbbb
AAA楊彥星BBBBB
aaa bbb ccc
aaa Hey, how are you George?aaaa
aaa Hey, how are you George?aaaa
Hey, how are you George?
[aa a b bb ccc]
[ aa a b bb ccc ]
aa%%%a%%%b%%%bb%%%ccc

字符串與其它類型的轉換

使用strconv包中的方法可以實現字符串與其它類型的轉換

package main
import (
	"fmt"
	"strconv"
)
func main() {
	//Itoa 將數字轉為字符串
	fmt.Println(strconv.Itoa(35))
	// Atoi 將字符串轉為其它類型并不一定會成功
	fmt.Println(strconv.Atoi("100"))
	fmt.Println(strconv.ParseBool("true")) //可以成功
	v,e := strconv.ParseBool("trues")//會有err
	if e!=nil{
		fmt.Println(e.Error())
	}else{
		fmt.Println(v)
	}
}

分享到:
標簽:語言
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定