您好,登錄后才能下訂單哦!
什么是Go?
Go是一門并發支持、垃圾回收的編譯型系統編程語言,旨在創造一門具有在靜態編譯語言的高性能和動態語言的高效開發之間擁有良好平衡點的一門編程語言。
Go的主要特點:
類型安全和內存安全
以非常直觀和極低代價的方案實現高并發
高效的垃圾回收機制
快速編譯(同時解決C語言中頭文件太多的問題)
為多核計算機×××能提升中的方案
UTF-8編碼支持
-----
Go存在的價值是什么?
[GO 在谷歌:以軟件工程為目的的語言設計請添加鏈接描述](https://www.oschina.net/translate/go-at-google-language-design-in-the-service-of-software-engineering)
-----
Go命令
在命令行或終端輸入go 即可查看所有支持的命令
Go常用命令簡介
go env 獲取Go環境變量
PS C:\Users\scott> go env
set GOARCH=amd64 #系統類型
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 開發目錄
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 :獲取遠程包(需要提前安裝git或hg)
go run: 直接運行程序
go build:測試編譯, 檢查是否有編譯錯誤
go fmt: 格式化源碼
go install :編譯包文件并編譯整個程序
go test:運行測試文件
go doc: 查看文檔
-----
第一個程序:
package main
import "fmt"
func main(){
fmt.Println("Hello world! 你好,世界!")
}
-----
Go導入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
)
導入包的別名
import bieming "fmt"
import . "fmt" (前面有一點,代指省略,有這功能,但不建議省用法)
只能導入使用到的包,未使用到的需要用雙斜線 // 內容 或 //*-----內容-------*//注釋
可見性規則
Go語言中,使用大小寫來決定該常量、變量、類型、接口、結構、或函數是否可以被外部包所調用:
根據約定,
函數名首字母小寫,即為private 私有 外部無法調用
函數名首字母大寫,即為public 公有 外部可以調用
Go基本類型
- 布爾型:bool
- 長度:1字節
- 取值范圍: true,false
- 注意事項:不可以用數字代表true或false
- 整型:int/uint
-根據運行平臺可能為32或64位
- 8位整型: int8/uint8
-長度:1字節
-取值范圍:-128~127/0~255
- 字節型:byte(uint8別名)
- 16位整型:int16/uint16
- 長度:2字節
- 取值范圍:-32768~32767/0~65535
- 32位整型:int32(rune)/uint32
- 長度:4字節
- 取值范圍:(-2147483648 到 2147483647)
- 64位整型:int64/uint64
- 長度:8字節
- 取值范圍:(-9223372036854775808 到 9223372036854775807)
- 浮點型:float32/float64
- 長度:4/8字節
- 小數位:精確到7/15位小數位
類型名稱 有無符號 bit數
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位數
uint No 等于cpu位數
rune Yes 與 int32 等價
byte No 與 uint8 等價
uintptr No -
- 復數類型:complex64/complex128
- 長度:8/16字節
- 足夠保存指針的32位或64位整型:uintptr
- 其他類型:
- array、struct、 string
- 引用類型:
- slice、map、chan
- 接口類型:interface
- 函數類型:func
類型零值:
零值不等于空值,而是當變量被聲明為某種類型后的默認值,通常情況下值類型默認值為0,bool為false,string為空字符串
變量聲明與賦值:
全局變量使用var聲明
局部變量(函數體)可以使用下面方式:
var a int = 1
var a,b,c,d = 1, 2, 3, 4
a,b,c,d := 1, 2, 3, 4
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。