(1)**冗餘
(2)不利於維護
(3)函式可以解決這個問題
為完成某一功能的程式指令(語句)的集合,稱為函式。
在go中,函式分為
:自定義函式、系統函式
基本語法:
func 函式名
(形參列表
) (
返回值型別列表
) return res
}func main()
(1)在實際開發中,我們往往需要在不同的檔案中,去呼叫其它檔案的定義函式,比如
main.go
中,去使用utils.go檔案中的函式
(2)不同開發者的函式名取的也是有可能相同的
說明:go的每乙個檔案都是屬於乙個包的,也就是說
go是以包的形式來管理檔案和專案目錄結構的。
包的三大作用
(1)區分相同名字的函式、變數等識別符號
(2)當程式檔案很多時,可以很好的管理專案
(3)控制函式、變數等訪問範圍,即作用域
包的相關說明
包需要開頭首字母大寫才能被使用。
打包的基本語法
package utils
引包的基本語法
import 「包的路徑」
4.乙個基本引包的例子
目錄結果如上圖
其中utils.go內**是:
package utilsmain.go內的**為:import "fmt"
func cal(n1 float64, n2 float64, operator byte) float64
return res
}
package main此demo絕對路徑為:import (
"fmt"
"gotest01/chapter_06/oa_demo/utils" // 預設從src開始
// 注意這個utils是資料夾的名字
)func main()
c:\gostu\code\src\gotest01\chapter_06\oa_demo\
導包的路徑需要從src目錄下開始導包
最後執行結果為:
(1)在給檔案打包時,該包對應乙個資料夾,比如
utils
檔案對應的包名就是
utils
,檔案的包名通常和檔案所在的資料夾名一直,一般為小寫字母。
[不是一定的
](2)當乙個檔案要使用其他包函式或變數時,需要先引入對應的包
[包名是另外乙個檔案
package
後面的那個名字
]1)引入方式1:
import 「包名」
2)引入方式2:
import (
「包名1」
「包名2」
3)package
指定在檔案第一行,然後是
import
指令。4)在
import
包時,路徑從
$gopath
的src
下開始,不用帶
src,
編譯器會自動從
src下開始引入。
(3)為了其他包的檔案,可以訪問到本報的函式的首字母需要大寫,類似其他語言的類。這樣才能跨包訪問。
[變數想要被其他包引用,變數也需要首字母大寫
](4)在訪問其他包函式或變數時,其語法為: 包名
.函式名 包名
.變數名
(5)如果包名較長,
go支援給包取別名,語法為:
import 別名 「包路徑」
(6)在同乙個包下不能有相同的函式名或變數名
(7)如果你要編譯成乙個可執行程式檔案,就需要將這個包宣告為
main,
即package main
這個是語法規範,如果是寫乙個庫可以自定義。
編譯乙個可執行檔案,在$gopath下執行
go build main
包路徑
GO 函式 方法
2 方法 實參通過值的方式傳遞,因此函式的形參是實參的拷貝。對形參進行修改不會影響實參。如果實參包括引用型別,如指標,slice 切片 map function channel等型別,實參可能會由於函式的間接引用被修改。沒有函式體的函式宣告,這表示該函式不是以go實現的。這樣的宣告定義了函式識別符號...
Go語言學習之匿名函式
函式可以分為 匿名函式和普通函式 匿名函式的使用 匿名函式就是沒有名字的函式,它只有函式邏輯體,而沒有函式名 定義的格式如下 func 引數列表 返回引數列表 乙個名字實際上沒多大區別,所有使用匿名函式都可以改成普通函式,那麼什麼情況下會使用匿名函式呢 定義變數名,是乙個不難,但是費腦子的事情,對於...
Go 語言函式方法
go 語言中同時有函式和方法。乙個方法就是乙個包含了接受者的函式,接受者可以是命名型別或者結構體型別的乙個值或者是乙個指標。所有給定型別的方法屬於該型別的方法集。語法格式如下 func variable name variable data type function name return typ...