成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

go語言函數(shù)命名 go語言常用函數(shù)

淺談Go語言函數(shù)與方法的區(qū)別

前段時間,我們實驗室用go作為后臺開發(fā)語言開發(fā)了一個web項目,由于這是自己第一次使用go語言進行開發(fā),在開發(fā)過程中,一味著追求完成任務,在編碼的時候沒有太注重性能,雖然勉強實現(xiàn)了功能,但是對go語言的理解還是比較淺顯的。下面來談談自己對go語言中函數(shù)與方法的理解。

成都創(chuàng)新互聯(lián)專注于長泰企業(yè)網(wǎng)站建設,自適應網(wǎng)站建設,商城網(wǎng)站建設。長泰網(wǎng)站建設公司,為長泰等地區(qū)提供建站服務。全流程按需網(wǎng)站開發(fā),專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務

普通函數(shù):

go函數(shù)可以返回多個值

值傳遞: 值傳遞是指在調用函數(shù)時將實際參數(shù)復制一份傳遞到函數(shù)中,這樣函數(shù)中如果對參數(shù)進行修改,將不會影響到實際參數(shù)

引用傳遞: 引用傳遞是指在調用函數(shù)將實際參數(shù)的地址傳遞到函數(shù)中,那么在函數(shù)中對參數(shù)進行的修改,將影響到實際參數(shù)。

一般來說go語言函數(shù)的 接收者(也就是形參)一般放在函數(shù)名后面 ,不能將指針類型的數(shù)據(jù)直接傳遞,也就是說函數(shù)形參如果是值類型,調用者必須使用值作為實參過來,如果函數(shù)形參是指針類型,則函數(shù)調用者需使用指針作為實參來調用。

普通方法:

接收者是在func關鍵字后面,而不是在函數(shù)名稱后面,接收者可以是自己定義的一個類型,這個類型可以是struct、interface,一個方法就是一個包含了接收者的函數(shù),接收者可以是命名類型或者是結構體類型的一個值或者是一個指針。

下面是一個例子來說明方法和函數(shù)的區(qū)別(重點)

GO語言學習系列八——GO函數(shù)(func)的聲明與使用

GO是編譯性語言,所以函數(shù)的順序是無關緊要的,為了方便閱讀,建議入口函數(shù) main 寫在最前面,其余函數(shù)按照功能需要進行排列

GO的函數(shù) 不支持嵌套,重載和默認參數(shù)

GO的函數(shù) 支持 無需聲明變量,可變長度,多返回值,匿名,閉包等

GO的函數(shù)用 func 來聲明,且左大括號 { 不能另起一行

一個簡單的示例:

輸出為:

參數(shù):可以傳0個或多個值來供自己用

返回:通過用 return 來進行返回

輸出為:

上面就是一個典型的多參數(shù)傳遞與多返回值

對例子的說明:

按值傳遞:是對某個變量進行復制,不能更改原變量的值

引用傳遞:相當于按指針傳遞,可以同時改變原來的值,并且消耗的內存會更少,只有4或8個字節(jié)的消耗

在上例中,返回值 (d int, e int, f int) { 是進行了命名,如果不想命名可以寫成 (int,int,int){ ,返回的結果都是一樣的,但要注意:

當返回了多個值,我們某些變量不想要,或實際用不到,我們可以使用 _ 來補位,例如上例的返回我們可以寫成 d,_,f := test(a,b,c) ,我們不想要中間的返回值,可以以這種形式來舍棄掉

在參數(shù)后面以 變量 ... type 這種形式的,我們就要以判斷出這是一個可變長度的參數(shù)

輸出為:

在上例中, strs ...string 中, strs 的實際值是b,c,d,e,這就是一個最簡單的傳遞可變長度的參數(shù)的例子,更多一些演變的形式,都非常類似

在GO中 defer 關鍵字非常重要,相當于面相對像中的析構函數(shù),也就是在某個函數(shù)執(zhí)行完成后,GO會自動這個;

如果在多層循環(huán)中函數(shù)里,都定義了 defer ,那么它的執(zhí)行順序是先進后出;

當某個函數(shù)出現(xiàn)嚴重錯誤時, defer 也會被調用

輸出為

這是一個最簡單的測試了,當然還有更復雜的調用,比如調試程序時,判斷是哪個函數(shù)出了問題,完全可以根據(jù) defer 打印出來的內容來進行判斷,非??焖?,這種留給你們去實現(xiàn)

一個函數(shù)在函數(shù)體內自己調用自己我們稱之為遞歸函數(shù),在做遞歸調用時,經常會將內存給占滿,這是非常要注意的,常用的比如,快速排序就是用的遞歸調用

本篇重點介紹了GO函數(shù)(func)的聲明與使用,下一篇將介紹GO的結構 struct

Go語言中方法名與函數(shù)名有啥區(qū)別?

方法名與對象相關,函數(shù)名與對象無關,其實區(qū)別不大.有時需要面向對象思想時用方法名嘍.

go語言中函數(shù)定義讓我搞蒙了

從語法講,重載是擴展了函數(shù)(或方法)簽名,從只認名字變?yōu)槊?參數(shù)類型,所以題主這個例子只要把不同參數(shù)的foo函數(shù)改成不同名字就好,比如foo1,foo2……

這個不支持按官方說法,是為了保持語法簡單,以及避免工程中遇到一些問題,比如參數(shù)隱式轉換等等

而支持重載的語言也有它們的道理,有時候,函數(shù)或方法名字不是程序員自己能控制的,比如說,如果java不支持重載,那么只能有一個構造函數(shù),通過不同輸入構造對象就比較麻煩,需要弄成靜態(tài)方法create的方式:

go語言語法(基礎語法篇)

import "workname/packetfolder"

導入多個包

方法調用 包名.函數(shù)//不是函數(shù)或結構體所處文件或文件夾名

packagename.Func()

前面加個點表示省略調用,那么調用該模塊里面的函數(shù),可以不用寫模塊名稱了:

當導入一個包時,該包下的文件里所有init()函數(shù)都會被執(zhí)行,然而,有些時候我們并不需要把整個包都導入進來,僅僅是是希望它執(zhí)行init()函數(shù)而已。下劃線的作用僅僅是為了調用init()函數(shù),所以無法通過包名來調用包中的其他函數(shù)

import _ package

變量聲明必須要使用否則會報錯。

全局變量運行聲明但不使用。

func 函數(shù)名 (參數(shù)1,參數(shù)2,...) (返回值a 類型a, 返回值b 類型b,...)

func 函數(shù)名 (參數(shù)1,參數(shù)2,...) (返回值類型1, 返回值類型2,...)

func (this *結構體名) 函數(shù)名(參數(shù) string) (返回值類型1, 返回值類型2){}

使用大小來區(qū)分函數(shù)可見性

大寫是public類型

小寫是private類型

func prifunc int{}

func pubfunc int{}

聲明靜態(tài)變量

const value int

定義變量

var value int

聲明一般類型、接口和結構體

聲明函數(shù)

func function () int{}

go里面所有的空值對應如下

通道類型

內建函數(shù) new 用來分配內存,它的第一個參數(shù)是一個類型,不是一個值,它的返回值是一個指向新分配類型零值的指針

func new(Type) *Type

[這位博主有非常詳細的分析]

Go 語言支持并發(fā),我們只需要通過 go 關鍵字來開啟 goroutine 即可。

goroutine 是輕量級線程,goroutine 的調度是由 Golang 運行時進行管理的。

同一個程序中的所有 goroutine 共享同一個地址空間。

語法格式如下:

通道(channel)是用來傳遞數(shù)據(jù)的一個數(shù)據(jù)結構。

通道的聲明

通道可用于兩個 goroutine 之間通過傳遞一個指定類型的值來同步運行和通訊。操作符 - 用于指定通道的方向,發(fā)送或接收。如果未指定方向,則為雙向通道。

[這里有比較詳細的用例]

go里面的空接口可以指代任何類型(無論是變量還是函數(shù))

聲明空接口

go里面的的強制類型轉換語法為:

int(data)

如果是接口類型的強制轉成其他類型的語法為:

go里面的強制轉換是將值復制過去,所以在數(shù)據(jù)量的時候有比較高的運行代價

網(wǎng)頁題目:go語言函數(shù)命名 go語言常用函數(shù)
路徑分享:http://jinyejixie.com/article32/dochisc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、、企業(yè)網(wǎng)站制作響應式網(wǎng)站、外貿建站、關鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司
灌南县| 揭西县| 姚安县| 库车县| 怀柔区| 永定县| 上虞市| 萍乡市| 阜城县| 本溪市| 定陶县| 左云县| 正安县| 仪征市| 长顺县| 紫阳县| 通化县| 增城市| 沿河| 金坛市| 庄浪县| 五莲县| 卓尼县| 密山市| 永城市| 崇左市| 岚皋县| 大兴区| 巍山| 枞阳县| 徐汇区| 阿拉善左旗| 通城县| 兴安县| 腾冲县| 道孚县| 丹寨县| 淮阳县| 澄迈县| 娄烦县| 惠水县|