Go的變量售碳、指針强重、字符串、數(shù)字(1)

變量的聲明

變量的聲明完整寫法如下所示:var param1 int = 1
由于Go可以通過(guò)初始變量值自行判斷數(shù)據(jù)類型贸人,所以在有初始值的情況下可以省略type:var param1 = 1
在聲明局部變量時(shí)间景,可以使用:=來(lái)進(jìn)一步簡(jiǎn)寫:param1 := 1
當(dāng)聲明變量時(shí)未給予初始值時(shí),會(huì)根據(jù)聲明類型給予零值

  • 數(shù)字類型的零值是0
  • 布爾類型的零值是false
  • 字符串類型的零值是""(空字符串)
  • 接口和引用類型(切片艺智、指針倘要、字典、通道十拣、函數(shù))的零值是nil
  • 數(shù)組和結(jié)構(gòu)體的零值是其所有成員的零值

指針(pointer)

變量的地址叫做指針

var msg string := "text" 

我們可以使用&取地址操作符封拧,來(lái)獲取變量的地址信息志鹃。

p := &msg

我們也可以通過(guò)指針來(lái)獲取、更改值信息

*p := "pointer"

我們也可以判斷指針是否為nil來(lái)判斷指針對(duì)象是否執(zhí)行一個(gè)變量

p != nil

指針在Go語(yǔ)言中可以被拆分為兩個(gè)核心概念:

  • 類型指針泽西,允許對(duì)這個(gè)指針類型的數(shù)據(jù)進(jìn)行修改曹铃,傳遞數(shù)據(jù)可以直接使用指針,而無(wú)須拷貝數(shù)據(jù)捧杉,類型指針不能進(jìn)行偏移和運(yùn)算陕见。
  • 切片,由指向起始元素的原始指針味抖、元素?cái)?shù)量和容量組成评甜。

內(nèi)置函數(shù)new

表達(dá)式new(T)將創(chuàng)建一個(gè)T類型的匿名變量,所做的是為T類型的新值分配并清零一塊內(nèi)存空間非竿,然后將這塊內(nèi)存空間的地址作為結(jié)果返回蜕着,而這個(gè)結(jié)果就是指向這個(gè)新的T類型值的指針值,返回的指針類型為*T红柱。

var p *int
p = new(int)
fmt.Println(*p) //0

string 字符串

string is the set of all strings of 8-bit bytes, conventionally but not necessarily representing UTF-8-encoded text. A string may be empty, but not nil. Values of string type are immutable.
字符串是8位字節(jié)的所有字符串的集合承匣,通常但不一定表示UTF-8編碼的文本。字符串可以為空锤悄,但不能為零韧骗。字符串類型的值是不可變的。

string 數(shù)據(jù)結(jié)構(gòu)

type stringStruct struct {
    str unsafe.Pointer //字符串的首地址
    len int //字符串的長(zhǎng)度
}

string 操作

聲明

字符串聲明:msg := "文本"零聚,如果涉及跨行文本袍暴,除開(kāi)\t\n等轉(zhuǎn)義字符,可以使用``符號(hào)隶症。

字符串方法

常用字符串方法都處于strings包下政模,例如字符串替換strings.Replace,字符串切割strings.Split蚂会,字符串查詢strings.Contains淋样,字符串比較strings.Compare等。

字符串轉(zhuǎn)換

  • 常用的字符串-數(shù)字轉(zhuǎn)換方法處于strconv包下胁住,如常用的字符串轉(zhuǎn)十進(jìn)制數(shù)字strconv.Atoi趁猴,常用整型轉(zhuǎn)字符串strconv.Itoa
  • string與[]byte、[]rune
    先用源碼說(shuō)明一下byte與rune
// byte is an alias for uint8 and is equivalent to uint8 in all ways. It is
// used, by convention, to distinguish byte values from 8-bit unsigned
// integer values.
// byte是uint8的別名彪见,在所有方面都與uint8等效儡司。它是按照慣例,用于區(qū)分字節(jié)值和8位無(wú)符號(hào)值整數(shù)值余指。
type byte = uint8
// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.
// rune是int32的別名捕犬,在所有方面都等同于int32。它是按照慣例,用于區(qū)分字符值和整數(shù)值或听。
type rune = int32

強(qiáng)調(diào)說(shuō)明byte是uint8的別名探孝;rune是int32的別名
string可以使用語(yǔ)言類型轉(zhuǎn)換直接實(shí)現(xiàn)轉(zhuǎn)換實(shí)現(xiàn)與[]byte誉裆、[]rune進(jìn)行相互轉(zhuǎn)換string([]byte),[]byte(string);string([]rune),[]rune(string)顿颅,其轉(zhuǎn)換過(guò)程使用的是值復(fù)制,所以原數(shù)據(jù)與結(jié)果數(shù)據(jù)兩者相互不受影響足丢。
注意[]byte與[]rune直接不能用直接類型轉(zhuǎn)換進(jìn)行轉(zhuǎn)換粱腻。
若對(duì)string 使用for range循環(huán)操作時(shí),取得的值類型是int32斩跌,即字符值绍些,若要展示真實(shí)文本要使用string(v)進(jìn)行類型轉(zhuǎn)換。

字符串拼接

  • 運(yùn)算符+拼接
msg := "123"
msg += "4"
fmt.Println(msg)//1234
  • fmt.Sprint函數(shù)
msg := fmt.Sprint("123", "4")
fmt.Println(msg)//1234
  • 構(gòu)建[]string后使用strings.Join函數(shù)
msgSlice := []string{"123","4"}
msg := strings.Join(msgSlice,"")
fmt.Println(msg)//1234
  • 使用bytes.Buffer
var b bytes.Buffer
b.WriteString("123")
b.WriteString("4")
fmt.Println(b.String())
  • 使用strings.Builder(推薦)
var b strings.Builder
b.WriteString("123")
b.WriteString("4")
fmt.Println(b.String())

+ 連接適用于短小的耀鸦、常量字符串(明確的柬批,非變量),因?yàn)榫幾g器會(huì)給我們優(yōu)化袖订。
strings.Join需要配合切片使用氮帐,是比較統(tǒng)一的拼接,不太靈活
fmt和buffer基本上不推薦
builder從性能和靈活性上洛姑,都是上佳的選擇上沐。

數(shù)字

數(shù)字類型分為整型、無(wú)符號(hào)整型楞艾、浮點(diǎn)型参咙,數(shù)字類型直接可以使用語(yǔ)言類型強(qiáng)制轉(zhuǎn)換來(lái)實(shí)現(xiàn)類型轉(zhuǎn)變,如int64(6),但是使用強(qiáng)制類型轉(zhuǎn)換會(huì)涉及精度丟失問(wèn)題硫眯,在具體使用中需要注意蕴侧。
數(shù)字類型都可以使用5大運(yùn)算符來(lái)進(jìn)行運(yùn)算+,-,*,/,%

關(guān)于i++

值得注意的是两入,在Go中戈盈,只有i++并沒(méi)有++i谆刨。并且i++不能用在賦值上,只能獨(dú)立使用归斤。

各數(shù)字類型的極限值

數(shù)字類型 極限值
int8 127
int16 32767
int32 2147483647
int64 9223372036854775807
int 9223372036854775807
uint8 255
uint16 65535
uint32 4294967295
uint64 18446744073709551615
uint 18446744073709551615
float32 3.4028234663852886e+38
float64 1.7976931348623157e+308
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痊夭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子脏里,更是在濱河造成了極大的恐慌她我,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異番舆,居然都是意外死亡酝碳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門恨狈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)疏哗,“玉大人,你說(shuō)我怎么就攤上這事禾怠》捣睿” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵吗氏,是天一觀的道長(zhǎng)芽偏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)弦讽,這世上最難降的妖魔是什么污尉? 我笑而不...
    開(kāi)封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮往产,結(jié)果婚禮上被碗,老公的妹妹穿的比我還像新娘。我一直安慰自己捂齐,他們只是感情好蛮放,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著奠宜,像睡著了一般包颁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上压真,一...
    開(kāi)封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天娩嚼,我揣著相機(jī)與錄音,去河邊找鬼滴肿。 笑死岳悟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泼差。 我是一名探鬼主播贵少,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼堆缘!你這毒婦竟也來(lái)了滔灶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吼肥,失蹤者是張志新(化名)和其女友劉穎录平,沒(méi)想到半個(gè)月后麻车,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斗这,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年动猬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片表箭。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赁咙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出燃逻,到底是詐尸還是另有隱情序目,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布伯襟,位于F島的核電站猿涨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏姆怪。R本人自食惡果不足惜叛赚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稽揭。 院中可真熱鬧俺附,春花似錦、人聲如沸溪掀。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)揪胃。三九已至璃哟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喊递,已是汗流浹背随闪。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骚勘,地道東北人铐伴。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像俏讹,于是被迫代替她去往敵國(guó)和親当宴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容