亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 GO 中使用函數類型聲明函數

如何在 GO 中使用函數類型聲明函數

Go
郎朗坤 2021-09-13 19:57:41
假設你聲明了一個函數類型type mapFunc func(value int) int你可以使用這種類型來聲明一個函數而不復制它嗎?就像是:doubleIt := mapFunc {    return 2*value}
查看完整描述

2 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

據我所知,最短的方法仍然是:


doubleIt := func (value int) int {

    return value * 2

}

所以它并沒有變得更短,而且我認為將函數簽名與其主體分離不會更具可讀性。聲明命名的 func 類型的好處是在其他聲明中使用它。


doubleId := mapFunc(func...)由于類型標識規則,不需要額外的轉換:


如果兩個函數類型相同,則它們具有相同數量的參數和結果值,對應的參數和結果類型相同,并且兩個函數都是可變參數或兩者都不是。參數和結果名稱不需要匹配。


查看完整回答
反對 回復 2021-09-13
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

當然,您可以像任何其他預先聲明的類型一樣func是一流的類型,盡管以這種方式聲明它沒有多大意義:


package main


import "fmt"


// You need not a named argument for a named type

type mapFunc func(int) int


func main() {

        doubleIt := mapFunc(func(value int) int { return value * 2})

        fmt.Println(doubleIt(2))      // 4

}

這是為了說明函數只是 Go 中的另一種類型,可以像任何其他命名類型一樣對待。


查看完整回答
反對 回復 2021-09-13
  • 2 回答
  • 0 關注
  • 257 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號