原創 go語言學習(十一)package簡介

2022-05-15 16:20:17 字數 2009 閱讀 6010

1、 go通過package的方式來組織原始碼

package 包名
注意:任何乙個原始碼都屬於乙個包

作用:**復用和可讀性

2、可執行程式的包名必須為main,並且包含乙個main函式

package main

import (

"fmt"

)func main()

3、package組織案例例

再src/calc的包編輯完成後再pkg中

1、鏈結工程

package main  -- |            靜態鏈結

|----------------------> 可執行檔案

pkg/windows_amd64/.../*.a ---|

1、除了可執行程式之外,使用者可以寫自定義包,自定義包編譯成靜態庫

package calc

// package calc2 不建議這麼寫

// 包組織方式,自定義包

// 使用go install生成靜態庫

// calc_test中呼叫靜態庫

var (

sum int

)func add(a int, b int) int

// 小寫方法名為私有,不能呼叫

// _ 沒有引用保留包

)// 呼叫pkg\windows_and64\githbu.com\gostudy\listen11\calc.a

// 執行全域性變數,再執行init初始化

var a int = 10

var b int = 10

// init 函式,再main函式之前執行

func init()

// init函式可以多個,可以有多檔案,多init,按編譯順序執行

// 1初始化sub 包

// 2初始化add import

// 3初始化main

func init()

func main()

注意:go_path 要配置好路徑

1、go run運⾏行行go**, 如果有多個⽂檔案,需要把所有⽂檔案都寫到go run後⾯面

2、go build 編譯go**,如果是可執行程式,缺省會在當前⽬目錄⽣生成可執行程式,可以使⽤用-o指定可執行程式生成的目錄。

3、go install編譯go**,並且把可執行程式拷貝到gopath的bin目錄,自定義或第三方包會拷貝到gopath的pkg目錄

1、乙個包里可以有0個或多個init函式,在程式啟動時會被自動呼叫

package calc

import (

"fmt"

)// 先執⾏行行全域性

// 變數量初始化

var a int=10

// 然後再執行

// init函式

func init()

// 最後執行

// main函式

func add(a, b int) int

2、 如果乙個包import另外乙個包

1、_ 沒有引用保留包

package calc

import (

「fmt"

_ 「sub」

)func add(a, b int) int

Go語言學習十一 go語言切片

go 語言切片是對陣列的抽象。go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片 動態陣列 與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。你可以宣告乙個未指定大小的陣列來定義切片 var identifier typ...

Go語言學習筆記 十一 之指標

變數和記憶體位址 1.每個變數都有記憶體位址,可以說通過變數來操作對應大小的記憶體,符號可以獲取變數的位址1 var a int322 a 1003 fmt.printf d n a 4 fmt.printf p n a 1 1002 0xc00004a058 2.普通變數儲存的是對應型別的值,這些...

原創 go語言學習(五)函式詳解1

1 函式介紹 2 多返回值和可變引數 3 defer語句 4 內建函式介紹 有輸 入 有輸出,用來執 行 乙個指定任務的 塊。func functionname parametername type returntype 其中引數列 表和返回值列 表是可選 func functionname 兩數相...