go安裝,基礎型別,語法

2021-09-11 16:33:23 字數 3966 閱讀 6664

驗證記憶體洩漏,記憶體洩漏的檢測工具

go開源專案彙總

mac 安裝,gopath修改 .bashrc檔案

並建立.zshrc檔案加入如下**:

if [ -f ~/.bashrc ]; then

source ~/.bashrc

fi

0.linux安裝

tar -c /usr/local -zxvf  go1.10.3.linux-amd64.tar.gz

新增/usr/loacl/go/bin目錄到path變數中。新增到/etc/profile 或$home/.profile都可以

vim /etc/profile

// mac使用brew安裝後,在最後一行新增,注意這一的goroot路徑

/etc/profile使用管理員許可權也寫不了是因為預設沒有寫的屬性,使用chmod 777 /etc/profile 修改讀寫屬性

# goroot

export goroot=/usr/local/cellar/go/1.12.6/libexec

# gopath

export gopath=/users/ywy/work/goprj

# gopath bin

export path=$path:$goroot/bin:$gopath/bin

centos使用yum安裝

# goroot

export goroot=/usr/lib/golang

# gopath

export gopath=/usr/ywy/goprj

# gopath bin

export path=$path:$goroot/bin:$gopath/bin

// wq儲存退出後source一下

source /etc/profile

使用yum安裝yum install golang -y (找不到包的解決方法)

gopath就是我的工作目錄,專案**都要放在該目錄的src下

1.ide的選擇

個人覺得還是eclipse +外掛程式的模式好,可惜想除錯beego專案的時候,會報找不到資源,因為eclipse除錯使用的是install方式,會把.exe拷貝到src的同一級bin目錄下,所以資源檔案等,使用的是相對路徑就找不到了,不知道怎麼破

vscode**跳轉後返回原來的地方 windows: ctrl + u

安裝dlv  vscode除錯

安裝go get -v github.com/rogpeppe/godef **跳轉

如果不能跳轉,然而vscode提供切換整套外掛程式的開關,通過開關把godef換掉。方法如下:

vscode中設定搜尋:use language server ,把勾選項去掉,重啟vscode

2. 編譯guru

2.go build和go install區別

go build

通過go build加上要編譯的go源檔名,我們即可得到乙個可執行檔案,預設情況下這個檔案的名字為原始檔名字去掉.go字尾。

包依賴的問題:  (與main同級目錄下go檔案中定義的結構/函式,編譯找不到函式,是因為編譯的時候,可以指定需要一起編譯的.go檔案)

$ go build hello.go

$ lshello hello.go

當然我們也 可以通過-o選項來指定其他名字:

$ go build -o mygo hello.go

$ lsmygo hello.go

如果我們在go-examples目錄下直接執行go build命令,後面不帶檔名,我們將得到乙個與目錄名同名的可執行檔案:

$ go build

$ lsgo-examples hello.go

go install

與build命令相比,install命令在編譯原始碼後還會將可執行檔案或庫檔案安裝到約定的目錄下。

go install編譯出的可執行檔案以其所在目錄名(dir)命名

go install將可執行檔案安裝到與src同級別的bin目錄下,bin目錄由go install自動建立

go install將可執行檔案依賴的各種package編譯後,放在與src同級別的pkg目錄下

獲取int,int64的長度

import "unsafe"

mylen := unsafe.sizeof(value)

log.info("%s %v", strmsg, mylen)

3. 異常處理

發生panic以後,如果不處理,者應用程式會崩潰,應該在defer中使用recover()處理,在本函式中panic之後的**,都不會被執行到

4.defer

//能夠讀取有名返回值

//規則二 defer執行順序為先進後出

//規則一 defer函式的引數是在defer語句出現的位置做計算的,而不是在函式執行的時候做計算的

func c() (i int)

var c inte***ce{}

var b string

a = "123"

c = 0x1001

b = a.(string)   //轉化

fmt.printf("-------%s", b)  

d := c.(int)

fmt.printf("-------%s %d", b, d)

9.閉包

命令列引數處理:

需要在vscode 中新增引數時,如則在除錯配置中新增如下:     "args": [

"--registry=consul",

"test"]

iargslen := len(os.args)

fmt.printf("args len: %d\n", iargslen)

//args[0] 是啟動檔名

args := os.args //獲取使用者輸入的所有引數

//如果使用者沒有輸入,或引數個數不夠,則呼叫該函式提示使用者

for _, x := range args

11.包的引用

a. import的路徑要從src下的資料夾開始: 如src目錄下的**目錄 gotest/gopackage/mypack,不管main檔案在哪一級目錄

b.包的引用使用資料夾名,哪怕在該資料夾下的go檔案中重新定義了包名,

如在mypack資料夾下的net.go中定義包

package hellopack

type mykey struct

在import 的時候還是要用  import "gotest/gopackage/mypack"

但是使用net.go中定義的結構,函式的時候,應該使用hellopack這個包名 strmykey := hellopack.mykey{}

也可以在import的時候重新命名 import my  "gotest/gopackage/mypack",那麼strmykey := my.mykey{}

重新命名並不是影響  reflect.typeof(strmykey).string()  都是hellopack.mykey

12.byte轉string()

string轉bool

13.編譯(交叉編譯)  windows / linux /darwin

windows編譯bat

cd %cd% 

set goos=linux

set goarch=amd64

go build

cgo_enabled=0 goos=linux goarch=amd64 go build

go基礎筆記 基礎語法

package main import fmt 在函式外部不可以使用 來定義變數 定義包內部變數 var ii 11 定義包內部多個變數 var bb true ss hello world temp int 123 func variable func main package main impo...

GO語言基礎語法

語言變數 go語言的語言符號又稱記法元素,共包括5類,標籤符 identifier 關鍵字 keyword 操作符 operator 分隔符 delimiter 字面量 literal 它們是組成go語言 和程式的最基本單位。go語言的所有源 都必須由 unicode 編碼規範的 utf 8 編碼格...

go基礎語法(二)

格式 func function name parameter list return types 例如 func max num1,num2 int int else return result func test args.int func main func main func swap x,...