久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

go語言獲取字符串長度 go字符串比較大小

Go中字符串的遍歷

首先說一下go中的字符串類型:

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。

字符串就是一串固定長度的字符連接起來的字符序列。Go的字符串是由單個字節(jié)連接起來的。Go語言的字符串的字節(jié)使用UTF-8編碼標(biāo)識Unicode文本。

下面介紹字符串的三種遍歷方式,根據(jù)實(shí)際情況選擇即可。

該遍歷方式==缺點(diǎn)==:遍歷是按照字節(jié)遍歷,因此如果有中文等非英文字符,就會出現(xiàn)亂碼,比如要遍歷"abc北京"這個字符串,效果如下:

可見這不是我們想要的效果,根據(jù)utf-8中文編碼規(guī)則,我們要str[3]str[4]str[5]三個字節(jié)合起來組成“北”字及 str[6]str[7]str[8]合起來組成“京”字。由此引出下面第二種遍歷方法。

該方式是按照字符遍歷的,所以不會出現(xiàn)亂碼,如下:

運(yùn)行結(jié)果:

從圖中可以看到第二個漢子“京”的開始下標(biāo)是6,直接跳過了4和5,可見確實(shí)依照utf8編碼方式將三個字節(jié)組合成了一個漢字,str[3]-str[5]組合成“北”字,str[6]-str[8]組合成了“京”字。

由于下標(biāo)的不確定性,所以引出了下面的遍歷方式。

1 可以先將字符串轉(zhuǎn)成 []rune 切片

2 再用常規(guī)方法進(jìn)行遍歷

運(yùn)行效果:

由此可見下標(biāo)是按1遞增的,沒有產(chǎn)生跳躍現(xiàn)象。

有一個字符數(shù)組,每一個元素都是字符串,如何獲得每一個字符串的長度?

取得的字符數(shù)組長度與使用的獲取長度的方法有關(guān),在C/C++中常用的獲取字符串長度或者字符串?dāng)?shù)組長度的函數(shù)有sizeof()、strlen()。

sizeof()求出的是數(shù)組的總長度,而不是數(shù)組中存放的有意義的數(shù)據(jù)的個數(shù)。比如定義一個int型的數(shù)組:

int a[10] = {1, 2, 3, 4, 5};

只初始化了五個元素,但是 sizeof(a)/sizeof(a[0]) 求出的是 10,而不是 5。換句話說,無法通過 sizeof(a)/sizeof(a[0]) 求出數(shù)組中有多少個有意義的數(shù)據(jù)。

用 sizeof 可以獲得數(shù)據(jù)類型或變量在內(nèi)存中所占的字節(jié)數(shù)。同樣,用 sizeof 也可以獲得整個數(shù)組在內(nèi)存中所占的字節(jié)數(shù)。

因?yàn)閿?shù)組中每個元素的類型都是一樣的,在內(nèi)存中所占的字節(jié)數(shù)都是相同的,所以總的字節(jié)數(shù)除以一個元素所占的字節(jié)數(shù)就是數(shù)組的長度。舉例如下:

# include stdio.h

int main(void){

int a[10] = {0};

printf("sizeof(a) = %d\n", sizeof(a));

return 0;

}

輸出結(jié)果是:

sizeof(a) = 40

數(shù)組 a 是 int 型的,每個元素占 4 字節(jié),所以長度為 10 的數(shù)組在內(nèi)存中所占的字節(jié)數(shù)就是 40。

擴(kuò)展資料:

strlen() 與 sizeof() 的區(qū)別

1、strlen(char*)

函數(shù)求是字符串的實(shí)際長度,它可以用來獲取動態(tài)實(shí)際字符數(shù)組的長度,是從開始到遇到第一個“\0”,如果只是定義沒有賦予初始值,這個結(jié)果是不確定的,它會從數(shù)組的首地址開始一直找下去,直到遇到“\0”停止查找。

2、sizeof()

求所占總空間的字節(jié)數(shù),靜態(tài)的,跟初始狀態(tài)字符數(shù)組的大小有關(guān)系,大小等于初始時字符數(shù)組的大小或者等于初始時字符數(shù)組的大小+1 。

在C++中,如果定義的是字符串?dāng)?shù)組的話,那么如果想獲取數(shù)組的長度,只能用sizeof(數(shù)組名),而不能用strlen(str)。

go 語言中的 rune

rune是Go語言中一種特殊的數(shù)據(jù)類型,它是int32的別名,幾乎在所有方面等同于int32,用于區(qū)分字符值和整數(shù)值,官方解釋如下:

下面我們通過一個例子來看一下:

我們猜測一下結(jié)果,hello5 個字符+1 個空格+3 個漢子,算起來應(yīng)該是 9 個,長度為 9 才對,但是我們執(zhí)行一下,

結(jié)果打印是 15,這是為什么呢?

所以計(jì)算出的長度就等于 5+1+3*3=15

如果我們需要計(jì)算出字符串的長度,而不是底層字節(jié)的個數(shù),那么可以使用下面的方法:

運(yùn)行結(jié)果如下:

在 rune 定義上方還有一個,byte = uint8

如何獲取字符串和字符數(shù)組的長度

在C語言中,可以通過庫函數(shù)strlen來計(jì)算字符串的長度,也可以通過循環(huán)計(jì)數(shù)來求取字符串長度。

函數(shù)原型:unsigned int strlen(char *str);

功 能:統(tǒng)計(jì)字符串str中字符的個數(shù),不包含'\0'

返 回 值:返回字符個數(shù)

具體實(shí)現(xiàn)方法可以參考如下程序段:

1、用strlen函數(shù)實(shí)現(xiàn)

char str[20];

int len; // 保存數(shù)組的長度

scanf("%s", str);

len = strlen(str); // 計(jì)算字符數(shù)組str的長度

注:需將頭文件#includestring.h添加進(jìn)源文件中。

2、用循環(huán)來實(shí)現(xiàn)

char str[20];

int len=0; // 保存數(shù)組的長度

scanf("%s", str);

while(str[len] != '\0') // 未檢測到結(jié)束字符

{

len++; // 統(tǒng)計(jì)字符數(shù)組str的長度

}

怎么獲得字符串的長度

通過String自帶的length()方法獲取字符串長度。

String a="abcdefg";//定義一個字符串

int len = a.length();//通過length獲取字符串長度,這里等于7

length()該方法返回此字符串的長度。長度是等于Unicode代碼單元中的字符串的數(shù)目。

網(wǎng)站名稱:go語言獲取字符串長度 go字符串比較大小
轉(zhuǎn)載源于:http://sd-ha.com/article24/doosdce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、小程序開發(fā)、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈、標(biāo)簽優(yōu)化、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)