柚子快報(bào)邀請(qǐng)碼778899分享:后端 Golang 入門
柚子快報(bào)邀請(qǐng)碼778899分享:后端 Golang 入門
一、Golang 簡(jiǎn)介
==============================================================================
Golang(又稱為 Go)是 Google 公司開(kāi)發(fā)出的一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語(yǔ)言。
1.Go 語(yǔ)言的特點(diǎn)
Go 語(yǔ)言保證了既能夠達(dá)到 靜態(tài)編譯語(yǔ)言的安全和性能,又達(dá)到了 動(dòng)態(tài)開(kāi)發(fā)語(yǔ)言維護(hù)的高效率,使用一個(gè)表達(dá)式來(lái)形容 Go 語(yǔ)言:Go = C + Python,說(shuō)明 Go 語(yǔ)言既有 C 靜態(tài)語(yǔ)言程序的運(yùn)行速度,又能達(dá)到 Python 動(dòng)態(tài)語(yǔ)言的快速開(kāi)發(fā)。
1)從 C 語(yǔ)言中繼承了很多理念,包括表達(dá)式語(yǔ)法,控制結(jié)構(gòu),基礎(chǔ)數(shù)據(jù)類型,調(diào)用參數(shù)傳值,指針 等等,也保留了和 C 語(yǔ)言一樣的編譯執(zhí)行方式及弱化的指針。
func testPtr(num *int) {
*num = 20
}
2)引入 包的概念,用于組織程序結(jié)構(gòu),Go 語(yǔ)言的 一個(gè)文件都要?dú)w于一個(gè)包,而不能單獨(dú)存在。
package main
import “fmt”
func main() {
fmt.Println(“Hello World”)
}
3)垃圾回收機(jī)制,內(nèi)存自動(dòng)回收,不需要開(kāi)發(fā)人員管理。
4)天然并發(fā):從語(yǔ)言層面上支持并發(fā),實(shí)現(xiàn)簡(jiǎn)單;goroutine 輕量級(jí)線程,可實(shí)現(xiàn)大并發(fā)處理,高效利用多核;基于 CPS 并發(fā)模型實(shí)現(xiàn)。
5)吸收了 管道通信機(jī)制,形成 Go 語(yǔ)言特有的管道 Channel,通過(guò)管道 Channel,我們可以實(shí)現(xiàn)不同 goroute 間的互相通信。
6)函數(shù)可以返回多個(gè)值:
func getSumAndSub(sum int,sub int) (int,int) {
Sum := sum + sub
Sub := sum - sub
return Sum,Sub
}
7)新的創(chuàng)新,比如:Slice 切片,Defer 延時(shí)執(zhí)行等。
2.Golang 的變量作用域
局部變量: 在函數(shù)內(nèi)部定義的變量,作用域僅限于函數(shù)內(nèi)部(首字母是大寫的也不行) 全局變量: 在函數(shù)外部定義的變量,作用域在整個(gè)包都有效。
但是當(dāng)變量在代碼塊中定義時(shí),比如 if for 中,那么這個(gè)變量的作用域就在該代碼塊中有效。
還有一個(gè)就是:賦值語(yǔ)句是不能定義在函數(shù)體外的,如:這種 name := "zhangsan",我們換成 var name string = "zhangsan" 即可。
3.Golang 執(zhí)行流程的兩種方式
先編譯,在執(zhí)行: go build -o Hello.exe test.go(編譯完后可以到處運(yùn)行,但是編譯后文件會(huì)較大) 直接運(yùn)行: go run test.go(直接運(yùn)行,速度相對(duì)來(lái)說(shuō)要比先編譯的較慢,需要依賴 Go 環(huán)境)
PS:Go 語(yǔ)言 定義的變量 或者 import 包,如果沒(méi)有使用放到,代碼是不能編譯通過(guò)的。
二、Golang 的基本操作
=================================================================================
1.在 Linux 上安裝 Golang 語(yǔ)言開(kāi)發(fā)包
1)安裝 Golang 軟件包
[root@localhost ~]# wget https://golang.google.cn/dl/go1.17.3.linux-amd64.tar.gz
[root@localhost ~]# tar xf go1.17.3.linux-amd64.tar.gz -C /usr/local/
[root@localhost ~]# ln -s /usr/local/go/bin/* /usr/bin/
[root@localhost ~]# go version
go version go1.17.3 linux/amd64
2)配置 Golang 的開(kāi)發(fā)環(huán)境
[root@localhost ~]# mkdir -p ~/Go-Test/src # Golang 的源代碼目錄
[root@localhost ~]# mkdir -p ~/Go-Test/pkg # Golang 編譯后生成的庫(kù)文件
[root@localhost ~]# mkdir -p ~/Go-Test/bin # Golang 編譯后生成的可執(zhí)行文件
[root@localhost ~]# cat <> ~/.bashrc
export GOROOT=/usr/local/go
export GOPATH=~/Go-Test
export PATH=
P
A
T
H
:
PATH:
PATH:GOROOT/bin:$GOPATH/bin
END
[root@localhost ~]# source ~/.bashrc
[root@localhost ~]# go env # 查看 Go 的環(huán)境變量是否修改文件中目錄
3)編寫 Go 代碼進(jìn)行驗(yàn)證
[root@localhost ~]# cat < Hello.go
package main
import “fmt”
func main() {
fmt.Println(“Hello World”)
}
END
[root@localhost ~]# go run Hello.go
Hello World
2.Golang 變量的基本使用
package main
import “fmt”
func main() {
var Count int // 定義一個(gè)變量 (聲明變量)
Count = 188 // 給定義的變量進(jìn)行賦值
fmt.Println(“Count:”,Count)
}
Golang 變量的三種使用方式:
1)指定變量類型(聲明后若不賦值,則使用默認(rèn)值)
func main() {
var Count int // int 類型的默認(rèn)值為 0
fmt.Println(Count)
}
2)根據(jù)自行判定變量類型(類型推導(dǎo): 簡(jiǎn)單來(lái)說(shuō)就是讓 Go 編譯器進(jìn)行自主判斷)
func main() {
var Count = 18.88
fmt.Printf(“Count 的值=%v,Count 的類型=%T”,Count,Count)
}
3)直接使用 := 進(jìn)行賦值(:= 表示聲明并賦值)
func main() {
name := “zhangsan”
fmt.Println(name)
}
在區(qū)域中的 數(shù)據(jù)值 可以在 同一類型范圍內(nèi)不斷變化:
func main() {
// 當(dāng)定義多個(gè)相同名稱的變量時(shí). Go 便會(huì)獲取最后一個(gè)變量的變量值
// 需要注意的是只能是同類型的 (比如說(shuō) int 類型就不能替換成 string)
var sum = 188
// PS: 在同一區(qū)域中的變量名不能重復(fù)聲明. 也就是說(shuō)在同一區(qū)域中的同一個(gè)變量名只能聲明一次
sum = 288
fmt.Println(sum)
}
Golang 中 + 的使用:
func main() {
var Sum = 188
var Sub = 18
Result := Sum + Sub
fmt.Println(Result) // 當(dāng)變量為整數(shù)時(shí). 做的便是加法運(yùn)算
1 := “Hello”
2 := “World”
3 := 1 + 2
fmt.Println(3) // 當(dāng)變量為字符串時(shí). 做的便是拼接操作
}
3.Golang 中整數(shù)的類型
| 類型 | 有無(wú)符號(hào) | 占用存儲(chǔ)空間 | 備注 |
| :-- | :-- | :-- | :-- |
| int | 有 | 32 位系統(tǒng) 4 個(gè)字節(jié),64 位系統(tǒng) 8 個(gè)字節(jié) | |
| uint | 無(wú) | 32 位系統(tǒng) 4 個(gè)字節(jié),64 位系統(tǒng) 8 個(gè)字節(jié) | |
| rune | 有 | 與 int32 等價(jià) | 主要用于處理 Unicode 碼 |
| byte | 無(wú) | 與 uint8 等價(jià) | 主要用于存儲(chǔ)字符 |
有符號(hào)合無(wú)符號(hào)最大的區(qū)別就是,有符號(hào)支持負(fù)數(shù),而無(wú)符號(hào)則是只支持正數(shù)。 bit 和 byte 的區(qū)別:bit 是計(jì)算機(jī)中最小的存儲(chǔ)單位,而 byte 則是計(jì)算機(jī)中的基本存儲(chǔ)單元(1 btye = 8 bit)
Go 語(yǔ)言的字符使用的是 UTF-8 的字符編碼,查詢編碼地址為:查詢編碼地址
在 Go 中,字符的本質(zhì)是一個(gè)整數(shù),直接輸出時(shí),會(huì)打印出字符對(duì)應(yīng)的 UTF-8 編碼的碼值。
最后
這份《“java高分面試指南”-25分類227頁(yè)1000+題50w+字解析》同樣可分享給有需要的朋友,感興趣的伙伴們可挑戰(zhàn)一下自我,在不看答案解析的情況,測(cè)試測(cè)試自己的解題水平,這樣也能達(dá)到事半功倍的效果?。ê脰|西要大家一起看才香)
別:bit 是計(jì)算機(jī)中最小的存儲(chǔ)單位,而 byte 則是計(jì)算機(jī)中的基本存儲(chǔ)單元(1 btye = 8 bit)
Go 語(yǔ)言的字符使用的是 UTF-8 的字符編碼,查詢編碼地址為:查詢編碼地址
在 Go 中,字符的本質(zhì)是一個(gè)整數(shù),直接輸出時(shí),會(huì)打印出字符對(duì)應(yīng)的 UTF-8 編碼的碼值。
最后
這份《“java高分面試指南”-25分類227頁(yè)1000+題50w+字解析》同樣可分享給有需要的朋友,感興趣的伙伴們可挑戰(zhàn)一下自我,在不看答案解析的情況,測(cè)試測(cè)試自己的解題水平,這樣也能達(dá)到事半功倍的效果?。ê脰|西要大家一起看才香)
[外鏈圖片轉(zhuǎn)存中…(img-kkTqNXMo-1723200106941)]
[外鏈圖片轉(zhuǎn)存中…(img-39EgDUQv-1723200106942)]
本文已被CODING開(kāi)源項(xiàng)目:【一線大廠Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實(shí)戰(zhàn)項(xiàng)目源碼】收錄
柚子快報(bào)邀請(qǐng)碼778899分享:后端 Golang 入門
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。