Go程式設計 變數 函式匯出與首字母大寫

2021-07-03 16:05:18 字數 1056 閱讀 1349

識別符號可被 匯出 以允許從另乙個包訪問。

同時符合以下條件即為已匯出標識

1、識別符號名的第乙個字元為unicode大寫字母(unicode類別「lu」);

2、該識別符號在包塊中已宣告或為欄位名或方法名。

以程式匯入gotest/even包為例

package

main

import (

"even"

"fmt"

)func

main()

package even

var i int = 123

func even(i int) bool

func odd(i int) bool

1.本地包 even 在這裡匯入;

2. 官方 fmt 包匯入;

3. 呼叫 even 包中的函式。 訪問乙個包中的函式的語法是 .function (), 變數 .var 。

在 go 中,當 變數或函式的首字母大寫 的時候, 函式會被從包中匯出(在包外部可見, 或者說公有的 ),因此函式名是 even。如果修改main.go 的第 10 行,使用未匯出的函式 even.odd:

fmt.printf("is %d even? %v\n", i, even.odd(i))

由於使用了私有的函式,會得到乙個編譯錯誤:

main.go:10: cannot refer to unexported name even.odd

概括來說:

公有函式的名字以大寫字母開頭;

私有函式的名字以小寫字母開頭。

對於結構體

type s struct

同樣,首字母大寫的字段可以被匯出,也就是說,在其他包中可以進行讀寫。字 段名以小寫字母開頭是當前包的私有的,函式定義也是類似的。

對於t1, *t2等匿名字段,其作用是「如果結構體 s,包含乙個匿名字段 t1,那麼這個結構體 s 就有了 t1的方法。如果包含的匿名欄位為 *t2,那麼這個結構體 s 就有了 *t2 的方法。」具體見另一篇文章

(golang 匿名字段)。

Go函式與變數

package main import fmt var a 100func main package main import fmt var a 100func main package main import fmt var a 100funcf1 func main package main i...

go常量與變數

常量使用關鍵字const,常量的資料型別只能是數字型 整數,浮點和複數 字串型和布林型。格式 const name type value 比如 const a 1 複製 在go語言中,可以省略型別,因為編譯器可以根據常量的值來推斷型別。常量在賦值時,可以使用運算子,比如 const b 1 2 複製...

Go 型別與變數

go 語言中的型別與其他語言類似,比較特殊的有以下幾個 bool 型別 它的值只能是 true 與 false。int uint 它們的長度會根據作業系統的不同 32 64 bit 的不同而有所區別。儲存指標的的32 64整形 uintptr 引用型別 slice,map,chan 值型別的預設值為...