您好,登錄后才能下訂單哦!
什么是Go?
Go是一門(mén)并發(fā)支持、垃圾回收的編譯型系統(tǒng)編程語(yǔ)言,旨在創(chuàng)造一門(mén)具有在靜態(tài)編譯語(yǔ)言的高性能和動(dòng)態(tài)語(yǔ)言的高效開(kāi)發(fā)之間擁有良好平衡點(diǎn)的一門(mén)編程語(yǔ)言。
Go的主要特點(diǎn):
類型安全和內(nèi)存安全
以非常直觀和極低代價(jià)的方案實(shí)現(xiàn)高并發(fā)
高效的垃圾回收機(jī)制
快速編譯(同時(shí)解決C語(yǔ)言中頭文件太多的問(wèn)題)
為多核計(jì)算機(jī)×××能提升中的方案
UTF-8編碼支持
-----
Go存在的價(jià)值是什么?
[GO 在谷歌:以軟件工程為目的的語(yǔ)言設(shè)計(jì)請(qǐng)?zhí)砑渔溄用枋鯹(https://www.oschina.net/translate/go-at-google-language-design-in-the-service-of-software-engineering)
-----
Go命令
在命令行或終端輸入go 即可查看所有支持的命令
Go常用命令簡(jiǎn)介
go env 獲取Go環(huán)境變量
PS C:\Users\scott> go env
set GOARCH=amd64 #系統(tǒng)類型
set GOBIN=C:\Users\scott\go\bin # 編譯后生成的bin目錄
set GOCACHE=C:\Users\scott\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\scott\go #Go 開(kāi)發(fā)目錄
set GOPROXY=
set GORACE=
set GOROOT=D:\Applications\Go #Go安裝目錄
set GOTMPDIR=
set GOTOOLDIR=D:\Applications\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:
\Users\scott\AppData\Local\Temp\go-build389094662=/tmp/go-build -gno-record-gcc-switches
go get :獲取遠(yuǎn)程包(需要提前安裝git或hg)
go run: 直接運(yùn)行程序
go build:測(cè)試編譯, 檢查是否有編譯錯(cuò)誤
go fmt: 格式化源碼
go install :編譯包文件并編譯整個(gè)程序
go test:運(yùn)行測(cè)試文件
go doc: 查看文檔
-----
第一個(gè)程序:
package main
import "fmt"
func main(){
fmt.Println("Hello world! 你好,世界!")
}
-----
Go導(dǎo)入package格式
import "fmt"
import "os"
import "time"
import "io"
或
import (
"fmt"
"os"
"time"
"io"
)
同理
//常量定義
const(
PI = 3.14
const1 = "STRING"
const2 = 2
const3 = 3
)
//全局變量
var(
name = "gopher"
name1 = "1"
name2 = 2
name3 = 3
)
//一般類型聲明
type(
newType int
type1 float32
type2 string
type3 byte
)
導(dǎo)入包的別名
import bieming "fmt"
import . "fmt" (前面有一點(diǎn),代指省略,有這功能,但不建議省用法)
只能導(dǎo)入使用到的包,未使用到的需要用雙斜線 // 內(nèi)容 或 //*-----內(nèi)容-------*//注釋
可見(jiàn)性規(guī)則
Go語(yǔ)言中,使用大小寫(xiě)來(lái)決定該常量、變量、類型、接口、結(jié)構(gòu)、或函數(shù)是否可以被外部包所調(diào)用:
根據(jù)約定,
函數(shù)名首字母小寫(xiě),即為private 私有 外部無(wú)法調(diào)用
函數(shù)名首字母大寫(xiě),即為public 公有 外部可以調(diào)用
Go基本類型
- 布爾型:bool
- 長(zhǎng)度:1字節(jié)
- 取值范圍: true,false
- 注意事項(xiàng):不可以用數(shù)字代表true或false
- 整型:int/uint
-根據(jù)運(yùn)行平臺(tái)可能為32或64位
- 8位整型: int8/uint8
-長(zhǎng)度:1字節(jié)
-取值范圍:-128~127/0~255
- 字節(jié)型:byte(uint8別名)
- 16位整型:int16/uint16
- 長(zhǎng)度:2字節(jié)
- 取值范圍:-32768~32767/0~65535
- 32位整型:int32(rune)/uint32
- 長(zhǎng)度:4字節(jié)
- 取值范圍:(-2147483648 到 2147483647)
- 64位整型:int64/uint64
- 長(zhǎng)度:8字節(jié)
- 取值范圍:(-9223372036854775808 到 9223372036854775807)
- 浮點(diǎn)型:float32/float64
- 長(zhǎng)度:4/8字節(jié)
- 小數(shù)位:精確到7/15位小數(shù)位
類型名稱 有無(wú)符號(hào) bit數(shù)
int8 Yes 8
uint8 No 8
uint16 No 16
int16 Yes 16
int32 Yes 32
int64 Yes 64
uint32 No 32
uint64 No 64
int Yes 等于cpu位數(shù)
uint No 等于cpu位數(shù)
rune Yes 與 int32 等價(jià)
byte No 與 uint8 等價(jià)
uintptr No -
- 復(fù)數(shù)類型:complex64/complex128
- 長(zhǎng)度:8/16字節(jié)
- 足夠保存指針的32位或64位整型:uintptr
- 其他類型:
- array、struct、 string
- 引用類型:
- slice、map、chan
- 接口類型:interface
- 函數(shù)類型:func
類型零值:
零值不等于空值,而是當(dāng)變量被聲明為某種類型后的默認(rèn)值,通常情況下值類型默認(rèn)值為0,bool為false,string為空字符串
變量聲明與賦值:
全局變量使用var聲明
局部變量(函數(shù)體)可以使用下面方式:
var a int = 1
var a,b,c,d = 1, 2, 3, 4
a,b,c,d := 1, 2, 3, 4
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。