GO學習之 函式和方法

2022-05-08 21:30:13 字數 2188 閱讀 1135

(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 utils

import "fmt"

func cal(n1 float64, n2 float64, operator byte) float64 

return res

}

main.go內的**為:

package main

import (

"fmt"

"gotest01/chapter_06/oa_demo/utils"   // 預設從src開始 

// 注意這個utils是資料夾的名字

)func main() 

此demo絕對路徑為:

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...