3-Golang基礎(chǔ)類型---int(數(shù)值)

Go語言中數(shù)值類型包括幾種不同大小的整數(shù)、浮點(diǎn)數(shù)和復(fù)數(shù)锡搜。每種數(shù)值類型都決定了對(duì)應(yīng)的大小范圍和是否支持正負(fù)符號(hào)橙困。

整數(shù)

Go語言提供了5種有符號(hào)、5種無符號(hào)耕餐、1種指針凡傅、1種單字節(jié)、1種單個(gè)unicode字符(unicode碼點(diǎn))肠缔,共13種整數(shù)類型,默認(rèn)值(零值)均為0.
int, uint, rune, int8, int16, int32, int64, uint8, uint16, uint32, uint64, byte, uintptr

序號(hào) 類型和描述
1 uint8 無符號(hào) 8 位整型 (0 到 255)
2 uint16 無符號(hào) 16 位整型 (0 到 65535)
3 uint32 無符號(hào) 32 位整型 (0 到 4294967295)
4 uint64 無符號(hào) 64 位整型 (0 到 18446744073709551615)
5 int8 有符號(hào) 8 位整型 (-128 到 127)
6 int16 有符號(hào) 16 位整型 (-32768 到 32767)
7 int32 有符號(hào) 32 位整型 (-2147483648 到 2147483647)
8 int64 有符號(hào) 64 位整型 (-9223372036854775808 到 9223372036854775807)
9 byte 類似 uint8
10 rune 類似 int32夏跷,通常表示一個(gè)unicode碼點(diǎn)
11 uint 32 或 64 位
12 int 與 uint 一樣大小
13 uintptr 無符號(hào)整型,用于存放一個(gè)指針

整數(shù)定義

示例

package main

import "fmt"

func main() {
    /*
        整數(shù)類型
        標(biāo)識(shí)符: int桩砰、int*拓春、uint释簿、uint*亚隅、uintptr、byte
        字面量: 十進(jìn)制庶溶、八進(jìn)制0777(7*8^2 +7*8^1 + 7*8^0)煮纵、十六進(jìn)制 0X0-9A-F
    */

    // 整數(shù)定義
    var age int = 18
    // 簡(jiǎn)短定義
    ages := 19
    fmt.Printf("%T,%d\n", age, age)
    fmt.Printf("%T,%d\n", ages, ages)

    fmt.Println(0777) // 8進(jìn)制
    fmt.Println(0x10) // 16進(jìn)制
}

下面是Go語言中關(guān)于算術(shù)運(yùn)算懂鸵、邏輯運(yùn)算和比較運(yùn)算的二元運(yùn)算符:

算術(shù)運(yùn)算符 + - * / % ++ --
關(guān)系運(yùn)算符 < <= > >= == !=  比較表達(dá)式的結(jié)果是布爾類型。
bit位運(yùn)算符 & | ^ &^ << >>
賦值運(yùn)算符:=行疏、+=匆光、-=、*=酿联、/=终息、%=、&=贞让、|=周崭、^=、<<=喳张、>>=

算術(shù)運(yùn)算符+续镇、-、*和/可以適用于整數(shù)销部、浮點(diǎn)數(shù)和復(fù)數(shù)摸航,但是取模運(yùn)算符%僅用于整數(shù)間的運(yùn)算。
在Go語言中舅桩,%取模運(yùn)算符的符號(hào)和被取模數(shù)的符號(hào)總是一致的酱虎,因此-5%3和-5%-3結(jié)果都是-2。
除法運(yùn)算符/的行為則依賴于操作數(shù)是否全為整數(shù)擂涛,比如5.0/4.0的結(jié)果是1.25逢净,但是5/4的結(jié)果是1,因?yàn)檎麛?shù)除法會(huì)向著0方向截?cái)嘤鄶?shù)歼指。

運(yùn)算示例

package main

import "fmt"

func main() {
    /*
        整數(shù)操作
        算術(shù)運(yùn)算(+, -, *, /, %, ++, --)
        關(guān)系運(yùn)算(==, !=, >, >=, <, <=)
        位運(yùn)算
        賦值運(yùn)算(=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, &^=)
    */

    // 算術(shù)運(yùn)算(+, -, *, /, %, ++, --)
    fmt.Println(1 + 2)
    fmt.Println(3 - 10)
    fmt.Println(3 * 9)
    fmt.Println(9 / 2)   // 結(jié)果為4, 取整
    fmt.Println(9.0 / 2) // 結(jié)果為4.5
    fmt.Println(9 / 2.0) // 結(jié)果為4.5
    fmt.Println(9 % 2)
    // fmt.Println(9 / 0) // 除數(shù)不能為0
    fmt.Println(0 / 9)

    var age int = 18
    // 自增和自減只能在后面
    age++
    fmt.Println(age)

    age--
    fmt.Println(age)

    // 關(guān)系運(yùn)算(==, !=, >, >=, <, <=)
    fmt.Println(2 == 3)
    fmt.Println(2 != 3)
    fmt.Println(2 > 3)
    fmt.Println(2 >= 3)
    fmt.Println(2 < 3)
    fmt.Println(2 <= 3)

    /*
        位運(yùn)算 二進(jìn)制的運(yùn)算 10 => 2
        & | ^ << >> &^
        十進(jìn)制 => 2 7/2 => 1 3/2 =>1 1/2 =>1 0  0111
        2 = > 0010
        與 7 & 2 => 0111 & 0010 => 0010 => 2
        或 7 | 2 => 0111 | 0010 => 0111 => 7
        非 7 ^ 2 => 0111 ^ 0010 => 0101 => 5
        左移 2 << 1 => 0010 << 1 => 0100 => 4
        右移 2 >> 1 => 0010 >> 1 => 0001 => 1
        按位與或 7 &^ 2 => 0111 &^ 0010 => 0101 => 5
    */
    fmt.Println(7 & 2)
    fmt.Println(7 | 2)
    fmt.Println(7 ^ 2)
    fmt.Println(2 << 1)
    fmt.Println(2 >> 1)
    fmt.Println(7 &^ 2)

    // 賦值運(yùn)算(=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, &^=)
    // a += b ==> a = a + b
    age = 1
    age += 3 // age = age +3
    fmt.Println(age)

    // int/uint/byte/rune/int* 類型不同爹土,不能運(yùn)算,必須強(qiáng)制轉(zhuǎn)換
    var intA int = 10
    var uintB uint = 3
    fmt.Println(intA + int(uintB))
    fmt.Println(uint(intA) + uintB)

    var apples int32 = 1
    var oranges int16 = 2
    var compote = int(apples) + int(oranges)
    fmt.Println(compote)

    // 大 -> 小 轉(zhuǎn)換可能出現(xiàn)溢出
    var intC int = 0xFFFF
    fmt.Println(intC, uint8(intC), int8(intC))

    f := 3.141 // a float64
    k := int(f)
    fmt.Println(f, k) // "3.141 3"
    f = 1.99
    fmt.Println(int(f)) // "1"
}


類型轉(zhuǎn)換
Go 不會(huì)對(duì)自動(dòng)對(duì)數(shù)據(jù)類型轉(zhuǎn)換踩身,因此左胀茵、右操作數(shù)類型必須一致或某個(gè)字面量,可通過類型名(數(shù)據(jù))的語法將數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)類型挟阻。需要注意值截?cái)嗪椭狄绯鰡栴}琼娘。

package main

import "fmt"

func main() {
    // int、uint附鸽、byte脱拼、rune、int* 類型不同坷备,不能運(yùn)算熄浓,必須強(qiáng)制轉(zhuǎn)換
    var intA int = 10
    var uintB uint = 3
    fmt.Println(intA + int(uintB))
    fmt.Println(uint(intA) + uintB)

    var apples int32 = 1
    var oranges int16 = 2
    var compote = int(apples) + int(oranges)
    fmt.Println(compote)

    // 大 -> 小 轉(zhuǎn)換可能出現(xiàn)溢出
    var intC int = 0xFFFF
    fmt.Println(intC, uint8(intC), int8(intC))

    f := 3.141 // a float64
    k := int(f)
    fmt.Println(f, k) // "3.141 3"
    f = 1.99
    fmt.Println(int(f)) // "1"
}

使用 fmt.Printf 進(jìn)行格式化參數(shù)輸出,占位符:

%b: 二進(jìn)制
%c: 字符
%d: 十進(jìn)制
    %+d 表示對(duì)正整數(shù)帶+符號(hào)
    %nd 表示最小占位 n 個(gè)寬度且右對(duì)齊
    %-nd 表示最小占位 n 個(gè)寬度且左對(duì)齊
    %0nd 表示最小占位 n 個(gè)寬度且右對(duì)齊省撑,空字符使用 0 填充
%o:八進(jìn)制赌蔑,%#o 帶 0 的前綴
%x俯在、%X:十六進(jìn)制,%#x(%#X)帶 0x(0X)的前綴
%U: Unicode 碼點(diǎn),%#U 帶字符的 Unicode 碼點(diǎn)
%q:帶單引號(hào)的字符

格式化示例:

package main

import "fmt"

func main() {
    /*
        fmt.Printf
        int娃惯、uint跷乐、int*、uint*
        byte, rune
    */
    var a byte = 'A'
    var w rune = '中'
    fmt.Println(a, w)

    age := 21
    fmt.Printf("%T %d %b %o %x\n", age, age, age, age, age) // %b二進(jìn)制  %o八進(jìn)制  %x16進(jìn)制
    fmt.Printf("%T %c\n", a, a)                             // %c 字節(jié)
    fmt.Printf("%T %q %U\n", w, w, w)                       // %q %U 碼點(diǎn)
    fmt.Printf("%5d\n", age)                                // 占位5個(gè)
    fmt.Printf("%-5d\n", age)                               // 左對(duì)齊并占位5個(gè)
    fmt.Printf("%05d\n", age)                               // 占位5個(gè)趾浅,用0補(bǔ)齊

    ascii := 'a'
    unicode := '國'
    newline := '\n'
    fmt.Printf("%d %[1]c %[1]q\n", ascii)   // "97 a 'a'"
    fmt.Printf("%d %[1]c %[1]q\n", unicode) // "22269 國 '國'"
    fmt.Printf("%d %[1]q\n", newline)       // "10 '\n'"
}

浮點(diǎn)數(shù)類型

Go語言提供了兩種精度的浮點(diǎn)數(shù)愕提,float32和float64。

package main

import "fmt"

func main() {
    /*
        float32,float64
        字面量: 十進(jìn)制表示法  科學(xué)技術(shù)表示法
        M E N => M * 10 ^ N
        1.9 E -1 => 0.19
    */

    //定義
    var height float64 = 1.68
    fmt.Printf("%T %.2f\n", height, height)

    var weight float64 = 14.18e1
    fmt.Println(weight)

    // 操作
    // 算術(shù)運(yùn)算(+, -, *, /, ++, --)
    fmt.Println(1.1 + 1.2)
    fmt.Println(1.1 - 1.2)
    fmt.Println(1.1 * 1.2)
    fmt.Println(1.1 / 1.2)

    height++
    fmt.Println(height)
    height--
    fmt.Println(height)
    height++
    fmt.Println(height)
    height--
    fmt.Println(height)

    // 關(guān)系運(yùn)算 (> >= < <=)
    fmt.Println(1.1 > 1.2)
    fmt.Println(1.1 >= 1.2)
    fmt.Println(1.1 < 1.2)
    fmt.Println(1.1 <= 1.2)
    fmt.Println(1.2-1.1 <= 0.005)

    // 賦值運(yùn)算(=, +=, -=, /= *=)
    height += 0.5
    fmt.Println(height)

    // 類型轉(zhuǎn)換
    fmt.Printf("%T, %T\n", 1.1, float32(1.1))
    fmt.Printf("%5.2f\n", height)
}

最后編輯于
?著作權(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)離奇詭異椎例,居然都是意外死亡挨决,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門订歪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脖祈,“玉大人,你說我怎么就攤上這事刷晋「歉撸” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵眼虱,是天一觀的道長(zhǎng)喻奥。 經(jīng)常有香客問我,道長(zhǎng)捏悬,這世上最難降的妖魔是什么撞蚕? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮过牙,結(jié)果婚禮上甥厦,老公的妹妹穿的比我還像新娘。我一直安慰自己寇钉,他們只是感情好刀疙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扫倡,像睡著了一般谦秧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天油够,我揣著相機(jī)與錄音蚁袭,去河邊找鬼征懈。 笑死石咬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卖哎。 我是一名探鬼主播鬼悠,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼亏娜!你這毒婦竟也來了焕窝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤维贺,失蹤者是張志新(化名)和其女友劉穎它掂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(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
  • 文/蒙蒙 一咱圆、第九天 我趴在偏房一處隱蔽的房頂上張望笛辟。 院中可真熱鬧,春花似錦序苏、人聲如沸手幢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽围来。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間监透,已是汗流浹背桶错。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胀蛮,地道東北人院刁。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像粪狼,于是被迫代替她去往敵國和親退腥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

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