Go語言基礎(chǔ)之開發(fā)環(huán)境、數(shù)據(jù)類型、運(yùn)算符

開發(fā)環(huán)境搭建

go官網(wǎng) https://golang.org/
下載 https://golang.org/dl/
下載 go1.11.2.windows-amd64.msi安裝包唧瘾,雙擊安裝即可措译。

IDE工具

IntelliJ IDEA 安裝go插件
File-Setting-Pluigns,檢索go饰序,點(diǎn)擊install即可安裝领虹,安裝成功后重啟即可完成

go pluign

新建Go項(xiàng)目
File-New-Project,選擇Go求豫,填寫項(xiàng)目信息


新建Go項(xiàng)目

填寫項(xiàng)目名稱塌衰,選擇項(xiàng)目保存目錄,點(diǎn)擊Finish即可

項(xiàng)目信息

新建Go File蝠嘉,選擇File-New-Go File


Go File

完成簡單的Hello world輸出

/**包聲明*/
package main

//引入包
import "fmt"

/**main函數(shù)定義*/
func main() {//go語法要求函數(shù)定義后緊跟的大括號必須跟在函數(shù)名后面最疆,不能回車到下一行
    /**定義變量name,并賦初值*/
    var name string = "feiyue"
    // fmt.Println(...) 可以將字符串輸出到控制臺蚤告,并在最后自動增加換行字符 \n
    fmt.Println("Hello world!","This is "+name)
}

//執(zhí)行結(jié)果
Hello world! This is feiyue

程序編寫完成后努酸,直接點(diǎn)擊main函數(shù)左側(cè)綠色按鈕運(yùn)行即可

Run

Go 語言的基本構(gòu)成

  • 包聲明
    package main 定義了包名。Go語言要求必須在源文件中非注釋部分的第一行指明這個(gè)文件屬于哪個(gè)包杜恰,如:package main获诈。package main表示一個(gè)可獨(dú)立執(zhí)行的程序,每個(gè) Go 應(yīng)用程序都包含一個(gè)名為 main 的包心褐。

  • 引入包
    import "fmt"告訴 Go 編譯器這個(gè)程序需要使用 fmt 包的函數(shù)舔涎,fmt 包實(shí)現(xiàn)了格式化 IO(輸入/輸出)的函數(shù)。

  • 函數(shù)
    func main() 是程序開始執(zhí)行的函數(shù)逗爹。main 函數(shù)是每一個(gè)可執(zhí)行程序所必須包含的亡嫌,一般來說都是在啟動后第一個(gè)執(zhí)行的函數(shù)(如果有 init() 函數(shù)則會先執(zhí)行該函數(shù))

  • 常量
    常量是一個(gè)簡單值的標(biāo)識符,在程序運(yùn)行時(shí)掘而,不會被修改的量昼伴。
    常量中的數(shù)據(jù)類型只可以是布爾型、數(shù)字型(整數(shù)型镣屹、浮點(diǎn)型和復(fù)數(shù))和字符串型圃郊。
    常量的定義格式:const identifier [type] = value
    顯式類型定義: const b string = "abc"
    隱式類型定義: const b = "abc"

  • 變量
    Go 語言變量名由字母、數(shù)字女蜈、下劃線組成持舆,其中首個(gè)字母不能為數(shù)字。
    聲明變量的一般形式是使用 var 關(guān)鍵字:
    第一種伪窖,指定變量類型逸寓,聲明后若不賦值,使用默認(rèn)值覆山。var name string
    第二種竹伸,根據(jù)值自行判定變量類型。 var name = "feiyue"
    第三種,根據(jù)指定變量名稱勋篓,變量類型吧享,并賦值。 var name string = "feiyue"
    第四種譬嚣,省略var, 使用:=聲明變量并賦值钢颂,注意:=左側(cè)的變量不應(yīng)該是已經(jīng)聲明過的,否則會導(dǎo)致編譯錯(cuò)誤拜银。d := 100
    第五種:多變量聲明殊鞭,類型相同多個(gè)變量可以同時(shí)聲明,然后一起賦值

var a, b int
var c string
a, b, c = 2, 3, "abc"
  • 語句 & 表達(dá)式
    Go 程序中尼桶,一行代表一個(gè)語句結(jié)束操灿。每個(gè)語句不需要以分號 ; 結(jié)尾,這些工作都將由 Go 編譯器自動完成泵督。

  • 注釋
    /*...*/ 是多行注釋趾盐,在程序執(zhí)行時(shí)將被忽略。單行注釋是最常見的注釋形式幌蚊,可以在程序任何地方使用以 //開頭的單行注釋谤碳。多行注釋也叫塊注釋溃卡,均已以/*開頭溢豆,并以*/結(jié)尾,且不可以嵌套使用瘸羡,多行注釋一般用于包的文檔描述或注釋成塊的代碼片段漩仙。

  • 標(biāo)識符
    標(biāo)識符用來命名變量、類型等程序?qū)嶓w犹赖。一個(gè)標(biāo)識符實(shí)際上就是一個(gè)或是多個(gè)字母(A~Za~z)數(shù)字(0~9)队他、下劃線_組成的序列,但是第一個(gè)字符必須是字母或下劃線而不能是數(shù)字峻村。
    當(dāng)標(biāo)識符(包括常量麸折、變量、類型粘昨、函數(shù)名垢啼、結(jié)構(gòu)字段等等)以一個(gè)大寫字母開頭,如:Group1张肾,那么使用這種形式的標(biāo)識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導(dǎo)入這個(gè)包)芭析,這被稱為導(dǎo)出(像面向?qū)ο笳Z言中的 public);標(biāo)識符如果以小寫字母開頭吞瞪,則對包外是不可見的馁启,但是他們在整個(gè)包的內(nèi)部是可見并且可用的(像面向?qū)ο笳Z言中的 protected )。

  • 行分隔符
    在 Go 程序中芍秆,一行代表一個(gè)語句結(jié)束惯疙。每個(gè)語句不需要像 C 家族中的其它語言一樣以分號; 結(jié)尾翠勉,因?yàn)檫@些工作都將由 Go 編譯器自動完成。
    如果你打算將多個(gè)語句寫在同一行螟碎,它們則必須使用 ;人為區(qū)分眉菱,但在實(shí)際開發(fā)中并不鼓勵這種做法。

Go 語言數(shù)據(jù)類型

在 Go 編程語言中掉分,數(shù)據(jù)類型用于聲明函數(shù)和變量俭缓。
Go 語言按類別有以下幾種數(shù)據(jù)類型:Go 語言按類別有以下幾種數(shù)據(jù)類型:

序 號 類型 描述
1 布爾型 布爾型的值只可以是常量 true 或者 false。var b bool = true
2 數(shù)字類型 整型 int 和浮點(diǎn)型 float32酥郭、float64华坦,Go 語言支持整型和浮點(diǎn)型數(shù)字,并且原生支持復(fù)數(shù)不从,其中位的運(yùn)算采用補(bǔ)碼惜姐。
3 字符串類型 字符串就是一串固定長度的字符連接起來的字符序列。Go的字符串是由單個(gè)字節(jié)連接起來的椿息。Go語言的字符串的字節(jié)使用UTF-8編碼標(biāo)識Unicode文本歹袁。
4 派生類型 包括:(a) 指針類型(Pointer)(b) 數(shù)組類型(c) 結(jié)構(gòu)化類型(struct)(d) Channel 類型(e) 函數(shù)類型(f) 切片類型(g) 接口類型(interface)(h) Map 類型

數(shù)字類型

整型:

序號 類型 描述
1 uint8 無符號 8 位整型 (0 到 255)
2 uint16 無符號 16 位整型 (0 到 65535)
3 uint32 無符號 32 位整型 (0 到 4294967295)
4 uint64 無符號 64 位整型 (0 到 18446744073709551615)
5 int8 有符號 8 位整型 (-128 到 127)
6 int16 有符號 16 位整型 (-32768 到 32767)
7 int32 有符號 32 位整型 (-2147483648 到 2147483647)
8 int64 有符號 64 位整型 (-9223372036854775808 到 9223372036854775807)

浮點(diǎn)型:

序號 類型 描述
1 float32 IEEE-754 32位浮點(diǎn)型數(shù)
2 float64 IEEE-754 64位浮點(diǎn)型數(shù)
3 complex64 32 位實(shí)數(shù)和虛數(shù)
4 complex128 64 位實(shí)數(shù)和虛數(shù)

其他數(shù)字類型

序號 類型 描述
1 byte 類似 uint8
2 rune 類似 int32
3 uint 32 或 64 位
4 int 與 uint 一樣大小
5 uintptr 無符號整型,用于存放一個(gè)指針

Go 語言運(yùn)算符

運(yùn)算符用于在程序運(yùn)行時(shí)執(zhí)行數(shù)學(xué)或邏輯運(yùn)算寝优。
Go 語言內(nèi)置的運(yùn)算符有:

  • 算術(shù)運(yùn)算符
    Go語言算術(shù)運(yùn)算符包含以下7種条舔,如下表所示:
運(yùn)算符 描述 實(shí)例
+ A + B 輸出結(jié)果 30
- A - B 輸出結(jié)果 -10
* A * B 輸出結(jié)果 200
/ B / A 輸出結(jié)果 2
% 求余 B % A 輸出結(jié)果 0
++ 自增 A++ 輸出結(jié)果 11
-- 自減 A-- 輸出結(jié)果 9

代碼示例

    var a int = 36
    var b int = 10
    var c int
    //加法
    c = a + b
    fmt.Printf("a + b = %d\n", c )
    //減法
    c = a - b
    fmt.Printf("a - b = %d\n", c )
    //乘法
    c = a * b
    fmt.Printf("a * b = %d\n", c )
    //除法
    c = a / b
    fmt.Printf("a / b = %d\n", c )
    //求余
    c = a % b
    fmt.Printf("a對b求余 = %d\n", c )
    //自增
    a = 20
    a++
    fmt.Printf("a++后 a 的值為  %d\n", a )
    //自減
    a = 20
    a--
    fmt.Printf("a--后 a 的值為 %d\n", a )

//執(zhí)行結(jié)果
a + b = 46
a - b = 26
a * b = 360
a / b = 3
a對b求余 = 6
a++后 a 的值為  21
a--后 a 的值為 19
  • 關(guān)系運(yùn)算符
    關(guān)系運(yùn)算符分為以下6種
運(yùn)算符 描述 實(shí)例
== 檢查兩個(gè)值是否相等,如果相等返回 True 否則返回 False乏矾。 (A == B) 為 False
!= 檢查兩個(gè)值是否不相等孟抗,如果不相等返回 True 否則返回 False。 (A != B) 為 True
> 檢查左邊值是否大于右邊值钻心,如果是返回 True 否則返回 False凄硼。 (A > B) 為 False
< 檢查左邊值是否小于右邊值,如果是返回 True 否則返回 False捷沸。 (A < B) 為 True
>= 檢查左邊值是否大于等于右邊值摊沉,如果是返回 True 否則返回 False。 (A >= B) 為 False
<= 檢查左邊值是否小于等于右邊值痒给,如果是返回 True 否則返回 False说墨。 (A <= B) 為 True

代碼示例

    var a int = 36
    var b int = 20
    // == 等于
    fmt.Println("a == b ",a == b )
    fmt.Println("a != b ",a != b )
    // < 小于
    fmt.Println("a < b ",a < b )
    // > 大于
    fmt.Println(" a > b ",a > b )
    // <= 小于等于
    fmt.Println("a <= b ",a <= b )
    // >= 大于等于
    fmt.Println("b >= a ",b >= a )
//執(zhí)行結(jié)果
a == b  false
a != b  true
a < b  false
 a > b  true
a <= b  false
b >= a  false
  • 邏輯運(yùn)算符
    邏輯運(yùn)算符有3種,分別是與(&&)侈玄、或(||)婉刀、非(!)
運(yùn)算符 描述 實(shí)例
&& 邏輯 AND 運(yùn)算符。 如果兩邊的操作數(shù)都是 True序仙,則條件 True突颊,否則為 False。 (A && B) 為 False
|| 邏輯 OR 運(yùn)算符。 如果兩邊的操作數(shù)有一個(gè) True律秃,則條件 True爬橡,否則為 False。 (A || B) 為 True
! 邏輯 NOT 運(yùn)算符棒动。 如果條件為 True糙申,則邏輯 NOT 條件 False,否則為 True船惨。 !(A && B) 為 True

代碼示例

var a bool = true
var b bool = false
fmt.Println("a && b = ",a && b )
fmt.Println("a || b = ",a || b )
fmt.Println(" !a = " , !a)

//執(zhí)行結(jié)果
a && b =  false
a || b =  true
 !a =  false
  • 位運(yùn)算符
    位運(yùn)算符對整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作柜裸,包括五個(gè)位運(yùn)算符 按位與&、按位或|粱锐、按位異或^疙挺、左移運(yùn)算符<<、右移運(yùn)算符>>
    Go 語言支持的位運(yùn)算符如下表所示怜浅。假定 A 為60铐然,B 為13:A = 0011 1100 B = 0000 1101
運(yùn)算符 描述 實(shí)例
& 按位與運(yùn)算符"&"是雙目運(yùn)算符。 其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)位相與恶座。 (A & B) 結(jié)果為 12, 二進(jìn)制為 0000 1100
| 按位或運(yùn)算符"|"是雙目運(yùn)算符搀暑。 其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)位相或 (A | B) 結(jié)果為 61, 二進(jìn)制為 0011 1101
^ 按位異或運(yùn)算符"^"是雙目運(yùn)算符。 其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)位相異或跨琳,當(dāng)兩對應(yīng)的二進(jìn)位相異時(shí)自点,結(jié)果為1。 (A ^ B) 結(jié)果為 49, 二進(jìn)制為 0011 0001
<< 左移運(yùn)算符"<<"是雙目運(yùn)算符湾宙。左移n位就是乘以2的n次方樟氢。 其功能把"<<"左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位冈绊,由"<<"右邊的數(shù)指定移動的位數(shù)侠鳄,高位丟棄,低位補(bǔ)0死宣。 A << 2 結(jié)果為 240 伟恶,二進(jìn)制為 1111 0000
>> 右移運(yùn)算符">>"是雙目運(yùn)算符。右移n位就是除以2的n次方毅该。 其功能是把">>"左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位博秫,">>"右邊的數(shù)指定移動的位數(shù)。 A >> 2 結(jié)果為 15 眶掌,二進(jìn)制為 0000 1111

按位與&挡育、按位或|、按位異或^ 的二進(jìn)制運(yùn)算表如下所示:

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1
  • 賦值運(yùn)算符
    賦值運(yùn)算符是算術(shù)運(yùn)算朴爬、位運(yùn)算基礎(chǔ)上加上賦值=結(jié)合而成的運(yùn)算符
運(yùn)算符 描述 實(shí)例
= 簡單的賦值運(yùn)算符即寒,將一個(gè)表達(dá)式的值賦給一個(gè)左值 C = A + B 將 A + B 表達(dá)式結(jié)果賦值給 C
+= 相加后再賦值 C += A 等于 C = C + A
-= 相減后再賦值 C -= A 等于 C = C - A
*= 相乘后再賦值 C *= A 等于 C = C * A
/= 相除后再賦值 C /= A 等于 C = C / A
%= 求余后再賦值 C %= A 等于 C = C % A
<<= 左移后賦值 C <<= 2 等于 C = C << 2
>>= 右移后賦值 C >>= 2 等于 C = C >> 2
&= 按位與后賦值 C &= 2 等于 C = C & 2
^= 按位異或后賦值 C ^= 2 等于 C = C ^ 2
|= 按位或后賦值 C |= 2 等于 C = C | 2
  • 其他運(yùn)算符
運(yùn)算符 描述 實(shí)例
& 返回變量存儲地址 &a; 將給出變量的實(shí)際地址。
* 指針變量。 *a; 是一個(gè)指針變量

運(yùn)算符優(yōu)先級
有些運(yùn)算符擁有較高的優(yōu)先級母赵,二元運(yùn)算符的運(yùn)算方向均是從左至右逸爵。下表列出了所有運(yùn)算符以及它們的優(yōu)先級,由上至下代表優(yōu)先級由高到低:
簡單記就是:凹嘲! > 算術(shù)運(yùn)算符 > 關(guān)系運(yùn)算符 > && > || > 賦值運(yùn)算符

優(yōu)先級 分類 描述 關(guān)聯(lián)性
1 后綴 () [] -> . ++ -- 左到右
2 一元 + - ! ~ ++ -- (type)*&sizeof 右到左
3 乘除师倔、求余 * / % 左到右
4 加減 + - 左到右
5 移位 << >> 左到右
6 關(guān)系 < <= > >= 左到右
7 相等 == != 左到右
8 按位與 & 左到右
9 按位異或 ^ 左到右
10 按位或 | 左到右
11 邏輯AND && 左到右
12 邏輯OR || 左到右
13 條件 ?: 右到左
14 賦值 = += -= *= /= %= >>= <<= &= ^= |= 右到左
15 逗號 , 左到右
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市周蹭,隨后出現(xiàn)的幾起案子趋艘,更是在濱河造成了極大的恐慌,老刑警劉巖凶朗,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件致稀,死亡現(xiàn)場離奇詭異,居然都是意外死亡俱尼,警方通過查閱死者的電腦和手機(jī)抖单,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遇八,“玉大人矛绘,你說我怎么就攤上這事∪杏溃” “怎么了货矮?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斯够。 經(jīng)常有香客問我囚玫,道長,這世上最難降的妖魔是什么读规? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任抓督,我火速辦了婚禮,結(jié)果婚禮上束亏,老公的妹妹穿的比我還像新娘铃在。我一直安慰自己,他們只是感情好碍遍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布定铜。 她就那樣靜靜地躺著,像睡著了一般怕敬。 火紅的嫁衣襯著肌膚如雪揣炕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天东跪,我揣著相機(jī)與錄音畸陡,去河邊找鬼矮烹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛罩锐,可吹牛的內(nèi)容都是我干的奉狈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼涩惑,長吁一口氣:“原來是場噩夢啊……” “哼仁期!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起竭恬,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤跛蛋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后痊硕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赊级,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年岔绸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了理逊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盒揉,死狀恐怖晋被,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刚盈,我是刑警寧澤羡洛,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站藕漱,受9級特大地震影響欲侮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肋联,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一威蕉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牺蹄,春花似錦忘伞、人聲如沸薄翅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翘魄。三九已至鼎天,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間暑竟,已是汗流浹背斋射。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工育勺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罗岖。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓涧至,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桑包。 傳聞我的和親對象是個(gè)殘疾皇子南蓬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

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

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,118評論 0 13
  • 第一個(gè)Go程序 go語言的基礎(chǔ)知識哑了,包括命名赘方,變量聲明,初始化弱左,賦值等等窄陡。歡迎來我的個(gè)人博客:fizzyi//he...
    Fizz翊閱讀 304評論 0 0
  • 第2章 順序編程 2.1 變量 變量聲明 變量聲明的類型信息放在變量之后,放在數(shù)組的中括號之后拆火,作返回值類型放在方...
    fjxCode閱讀 418評論 0 1
  • 上一章節(jié)我們已經(jīng)了解了 Go 語言的基本組成結(jié)構(gòu)跳夭,本章節(jié)我們將學(xué)習(xí) Go 語言的基礎(chǔ)語法。 -Go 標(biāo)記 Go 程...
    誰說我是小小云閱讀 832評論 0 1
  • 首先们镜,先說說什么是操作系統(tǒng)优妙。 What is operating system? Anoperating syst...
    超級愛吃小粽子閱讀 1,256評論 0 0