首頁 > 後端開發 > Golang > 主體

如何在 Golang 中將函數附加到結構體

王林
發布: 2024-08-06 02:58:52
原創
1031 人瀏覽過

How to to attach a function to a struct in Golang

如果您來自其他語言,例如 php、C#、Dart 等,您會熟悉為類別建立方法。通常這些方法為該類別實作一個操作。在此類 OOP 語言中,您可以在類別範圍內建立此類方法,例如:

class ClassName{
....
 function functionName(){
  // perform action
}
}
登入後複製

在 go 中,您先建立一個結構體,然後您可以附加接收器來對該結構體執行特定操作。例如,我們有一個模型 User,我們希望它有一個傳回使用者全名的方法,如下所示:

type myUser struct{
 FirstName string
LastName string
PostalCode string
DateOfBirth time.Time
}
登入後複製

上面我們剛剛建立了一個具有各種屬性(例如FirstName、LastName ....)的User 類型,我們希望有一個方法可以為「myUser」類型執行一些特殊操作,在本例中只傳回全名形式指定的屬性FirstName,LastName.

我們可以建立一個傳回字串的接收函數全名。

func (user *myUser) fullname() (string, string){
   return user.FirstName ,user.LastName
}

登入後複製

我們如何使用它?我們可以直接在主函數中測試它,看看它是如何運作的:

func main() {

    user := myUser{
        FirstName: "Felix",
        LastName:  "chi",
    }
    fmt.Println(user.fullname())

}
登入後複製

因此,我們成功地為 myUser 結構建立了一個接收器方法。完整的頌歌如下:

package main

import (
    "fmt"
    "time"
)

type myUser struct {
    FirstName   string
    LastName    string
    PostalCode  string
    DateOfBirth time.Time
}

func (user *myUser) fullname() (string, string) {
    return user.FirstName, user.LastName
}

func main() {

    user := myUser{
        FirstName: "Felix",
        LastName:  "chi",
    }
    fmt.Println(user.fullname())

}
登入後複製

那接下來呢?繼續將程式碼貼到 https://go.dev/play/ 上,看看它是如何真正運作的。請參閱我的下一篇文章...!!!!!

以上是如何在 Golang 中將函數附加到結構體的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!