欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言的type?func()用法詳解

 更新時(shí)間:2022年03月23日 09:09:09   作者:西京刀客  
在Go語(yǔ)言中,函數(shù)的基本組成為:關(guān)鍵字func、函數(shù)名、參數(shù)列表、返回值、函數(shù)體和返回語(yǔ)句,這篇文章主要介紹了Go語(yǔ)言的type?func()用法,需要的朋友可以參考下

一、前置基礎(chǔ)

1. go 函數(shù)基礎(chǔ)

在Go語(yǔ)言中,函數(shù)的基本組成為:關(guān)鍵字func、函數(shù)名、參數(shù)列表、返回值、函數(shù)體和返回語(yǔ)句。

func 函數(shù)名(參數(shù)列表) 返回值類型 {函數(shù)體內(nèi)部}

Go語(yǔ)言是強(qiáng)數(shù)據(jù)類型的語(yǔ)言,參數(shù)是要指定類型的不然就報(bào)錯(cuò)。func 是函數(shù)的聲明關(guān)鍵字。

1) 返回值
返回值的定義,是可以給返回值取一個(gè)名稱的,還有一點(diǎn)是和其他的編程語(yǔ)言不一樣的是在Go語(yǔ)言中函數(shù)的返回值可以有多個(gè)的

func addTwoNumber(a int, b int) (int, int) {
return a+b, a-b
}

同時(shí)可以給返回值取一個(gè)別名

func addTwoNumber(a int, b int) (sum, dif int) {
return a+b, a-b
}

像這樣給返回值取完名字后可以給返回值直接賦值

func addTwoNumber(a int, b int) (sum, dif int) {
sum = a+b
dif = a-b
return
}

同樣這樣也是可以直接返回sum,和dif兩個(gè)值的。

2) 函數(shù)可變參數(shù)

func sum(numbers ...int) int {
s := 0
for i := range numbers{
s += i
}r
eturn s
}f
unc main() {
fmt.Println(sum(1,2,3,4,5))
}

像這樣我們就可以傳給sum函數(shù)多個(gè)值了。

2. 函數(shù)簽名

函數(shù)類型 又叫 函數(shù)簽名 , 一個(gè)函數(shù) 的類型就是函數(shù)定義首行去掉函數(shù)名、參數(shù)名和{,可以 使用 fmt.Printf 的”%T”格式化參數(shù)打印函數(shù)的類型。

函數(shù)類型相同
兩個(gè)函數(shù)類型相同的條件是**:擁有相同的形參列表和返回值列表(列表元素的次序、個(gè)數(shù)和類型都相同),形參名可以不同 。** 以下 3 個(gè)函數(shù)的函數(shù)類型完全一樣。

func add (a , b int) int { return a + b }
func sub (c int, d int) int { return c - d }
func mul (e int, f int) int { return e * f }

驗(yàn)證demo

package main
import "fmt"

func add(a, b int) int     { return a + b }
func sub(c int, d int) int { return c - d }
func mul(e int, f int) int { return e * f }
func main() {
	fmt.Printf("%T\n", add)
	fmt.Printf("%T\n", sub)
	fmt.Printf("%T\n", mul)
}

執(zhí)行g(shù)o run test.go輸出結(jié)果如下:

func(int, int) int
func(int, int) int
func(int, int) int

二、Go語(yǔ)言的type func()用法 | type func() 自定義函數(shù)類型

1. golang通過(guò)type定義函數(shù)類型

在 Go 語(yǔ)言中,type 可以定義任何自定義的類型

比如熟悉的:type dog struct{},type myInt int 等等

所以 func 也是可以作為類型自定義的,type myFunc func(int) int,意思是自定義了一個(gè)叫 myFunc 的函數(shù)類型,這個(gè)函數(shù)的簽名必須符合輸入為 int,輸出為 int。

golang通過(guò)type定義函數(shù)類型
通過(guò) type 可以定義函數(shù)類型,格式如下

type typeName func(arguments) retType

函數(shù)類型也是一種類型,故可以將其定義為函數(shù)入?yún)?/strong>,在 go 語(yǔ)言中函數(shù)名可以看做是函數(shù)類型的常量,所以我們可以直接將函數(shù)名作為參數(shù)傳入的函數(shù)中。

驗(yàn)證demo

package main

import "fmt"
func add(a, b int) int {
	return a + b
}
//sub作為函數(shù)名可以看成是 op 類型的常量
func sub(a, b int) int {
	return a - b
//定義函數(shù)類型 op
type op func(a, b int) int
//形參指定傳入?yún)?shù)為函數(shù)類型op
func Oper(fu op, a, b int) int {
	return fu(a, b)
func main() {
	//在go語(yǔ)言中函數(shù)名可以看做是函數(shù)類型的常量,所以我們可以直接將函數(shù)名作為參數(shù)傳入的函數(shù)中。
	aa := Oper(add, 1, 2)
	fmt.Println(aa)
	bb := Oper(sub, 1, 2)
	fmt.Println(bb)

到此這篇關(guān)于Go語(yǔ)言的type func()用法的文章就介紹到這了,更多相關(guān)Go語(yǔ)言type func()用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang中context庫(kù)的高級(jí)應(yīng)用

    Golang中context庫(kù)的高級(jí)應(yīng)用

    context庫(kù)不僅對(duì)于提升代碼的效率和性能至關(guān)重要,而且還幫助開(kāi)發(fā)者在復(fù)雜的系統(tǒng)中保持代碼的清晰和可維護(hù)性,下面我們就來(lái)看看context庫(kù)的高級(jí)應(yīng)用吧
    2024-01-01
  • goroutine?泄漏和避免泄漏實(shí)戰(zhàn)示例

    goroutine?泄漏和避免泄漏實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了goroutine?泄漏和避免泄漏實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 簡(jiǎn)單對(duì)比一下?C語(yǔ)言?與?Go語(yǔ)言

    簡(jiǎn)單對(duì)比一下?C語(yǔ)言?與?Go語(yǔ)言

    這篇文章主要介紹了簡(jiǎn)單對(duì)比一下?C語(yǔ)言?與?Go語(yǔ)言的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • 一文帶你了解Go語(yǔ)言中函數(shù)設(shè)計(jì)的實(shí)踐示例

    一文帶你了解Go語(yǔ)言中函數(shù)設(shè)計(jì)的實(shí)踐示例

    良好設(shè)計(jì)的函數(shù)具有清晰的職責(zé)和邏輯結(jié)構(gòu),提供準(zhǔn)確的命名和適當(dāng)?shù)膮?shù)控制,下面我們將一一描述函數(shù)設(shè)計(jì)時(shí)能夠遵循的最佳實(shí)踐,希望對(duì)大家有所幫助
    2023-06-06
  • Go語(yǔ)言七篇入門教程七GC垃圾回收三色標(biāo)記

    Go語(yǔ)言七篇入門教程七GC垃圾回收三色標(biāo)記

    這篇文章主要為大家介紹了Go語(yǔ)言教程關(guān)于GC垃圾回收三色標(biāo)記的示例詳解,本篇文章是Go語(yǔ)言七篇入門教程系列文章,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例

    go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例

    本文主要介紹了go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Go實(shí)現(xiàn)MD5加密的三種方法小結(jié)

    Go實(shí)現(xiàn)MD5加密的三種方法小結(jié)

    本文主要介紹了Go實(shí)現(xiàn)MD5加密的三種方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • GO語(yǔ)言的控制語(yǔ)句詳解包括GO語(yǔ)言的指針語(yǔ)法

    GO語(yǔ)言的控制語(yǔ)句詳解包括GO語(yǔ)言的指針語(yǔ)法

    這篇文章主要介紹了GO語(yǔ)言的控制語(yǔ)句詳解包括GO語(yǔ)言的指針語(yǔ)法,GO語(yǔ)言switch結(jié)構(gòu),GO語(yǔ)言for的4種結(jié)構(gòu)需要的朋友可以參考下
    2022-12-12
  • Go語(yǔ)言LeetCode題解1046最后一塊石頭的重量

    Go語(yǔ)言LeetCode題解1046最后一塊石頭的重量

    這篇文章主要為大家介紹了Go語(yǔ)言LeetCode題解1046最后一塊石頭的重量,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go在GoLand中引用github.com中的第三方包具體步驟

    Go在GoLand中引用github.com中的第三方包具體步驟

    這篇文章主要給大家介紹了關(guān)于Go在GoLand中引用github.com中第三方包的具體步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Go具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-01-01

最新評(píng)論