好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > golang 函數以及函數和方法的詳解及區別

golang 函數以及函數和方法的詳解及區別

熱門標簽:黃岡人工智能電銷機器人哪個好 惠州電銷防封電話卡 汕頭小型外呼系統 釘釘有地圖標注功能嗎 鄭州亮點科技用的什么外呼系統 濱州自動電銷機器人排名 阿里云ai電話機器人 建造者2地圖標注 浙江高頻外呼系統多少錢一個月

golang 函數以及函數和方法的區別

在接觸到go之前,我認為函數和方法只是同一個東西的兩個名字而已(在我熟悉的c/c++,python,java中沒有明顯的區別),但是在golang中者完全是兩個不同的東西。官方的解釋是,方法是包含了接收者的函數。到底什么意思呢。

首先函數的格式是固定的,func+函數名+ 參數 + 返回值(可選) + 函數體。例

func main() 

{

fmt.Println("Hello go")

}

在golang中有兩個特殊的函數,main函數和init函數,main函數不用介紹在所有語言中都一樣,它作為一個程序的入口,只能有一個。init函數在每個package是可選的,可有可無,甚至可以有多個(但是強烈建議一個package中一個init函數),init函數在你導入該package時程序會自動調用init函數,所以init函數不用我們手動調用,l另外它只會被調用一次,因為當一個package被多次引用時,它只會被導入一次。

package mypackage

import (
 "fmt"
)

var I int

func init() {
 I = 0
 fmt.Println("Call mypackage init1")
}

func init() {
 I = 1
 fmt.Println("Call mypackage init2")
}

package main

import (
 "demo/mypackage"
 "fmt"
)

func main() {
 fmt.Println("Hello go.... I = ", mypackage.I)
}

運行結果:

我們可以看到,程序為我們自動調用了兩個init函數,并且是按照順序調用的。

下面來看方法。

package main

import "fmt"

type myint int

//乘2
func (p *myint) mydouble() int {
 *p = *p * 2
 return 0
}

//平方
func (p myint) mysquare() int {
 p = p * p
 fmt.Println("mysquare p = ", p)
 return 0
}

func main() {
 var i myint = 2
 i.mydouble()
 fmt.Println("i = ", i)
 i.mysquare()
 fmt.Println("i = ", i)
}

運行結果:

我們可以看到方法和函數的區別,方法在func關鍵字后是接收者而不是函數名,接收者可以是自己定義的一個類型,這個類型可以是struct,interface,甚至我們可以重定義基本數據類型。我們可以給他一些我們想要的方法來滿足我們的實際工程中的需求,就像上面一樣我重定義了int并給了它一個乘2和平法的方法,這里我們要注意一個細節,接收者是指針和非指針的區別,我們可以看到當接收者為指針式,我們可以通過方法改變該接收者的屬性,但是非指針類型缺做不到。

這里的接收者和c++中的this指針有一些相似,我們可以把接受者當作一個class,而這些方法就是類的成員函數,當接收者為指針類型是就是c++中的非const成員函數,為非指針時就是const成員函數,不能通過此方法改變累的成員變量。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • golang struct擴展函數參數命名警告解決方法
  • golang中strconv.ParseInt函數用法示例
  • golang模板template自定義函數用法示例
  • 深入解析golang編程中函數的用法
  • Golang的os標準庫中常用函數的整理介紹
  • Golang記錄、計算函數執行耗時、運行時間的一個簡單方法
  • Golang學習筆記(五):函數

標簽:瀘州 阿壩 晉中 泰安 滄州 昭通 駐馬店 東營

巨人網絡通訊聲明:本文標題《golang 函數以及函數和方法的詳解及區別》,本文關鍵詞  golang,函數,以及,和,方法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang 函數以及函數和方法的詳解及區別》相關的同類信息!
  • 本頁收集關于golang 函數以及函數和方法的詳解及區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: avtt香蕉久久| 小sao货水好多真紧cao| 亚洲欧美校园| 稚嫩一阵剧痛撕裂h| 四川女人高潮一级毛片| 色婷婷狠狠18禁久久yyy图片| 淫视频网站| 春厢秘史| 10000个有效实名认证游戏 | 人与禽交免费网站视频| 伊人丁香狠狠色综合久久| 快穿肉文| 国产在线久爱草草免费| 91精产一二三产区区别超碰潮喷 | a级特黄的片子| ass芬兰肥妇bbww| 国产肥熟| 户外 露出 在线观看视频| 试看120秒又黄又大视频| 欧美另类第一页| 西班牙性生交大片免费看| 国产脚交榨精视频在线观看 | 欧美狂野激情高清视频在线看| 公车挺进尤物少妇翘臀视频| 97超频在线观看| 第一会所尤物magnet| 被男人吃奶很爽的毛片两男一女| 免费看一级一级人妻片| 乖女娇嫩h| 好大好深别停视频视频| 波多野结衣之又飞调教免费观看| 蜜桃狠狠色伊人亚洲综合网站| 萌白酱甜味弥漫白丝袜vip| 欧美国产小视频| 波多野结衣啪啪| 99亚洲欲妇?????| 久久久精品欧美一区二区三区拳交| 乳色吐息播放| 国产成人午夜性a一级毛片| 体内?精69XXXXXx喷潮网| 娇妻被黑人夹成了三明治|