在Go中定義方法

引言

函數允許你將邏輯組織到可重復的過程中,每次運行時可以使用不同的參數。在定義函數的過程中,你會經常發現多個函數可能每次都操作同一段數據。Go可以識別這種模式,并允許您定義特殊的函數,稱為方法,其目的是對某些特定類型的實例進行操作,稱為接收器。為類型添加方法不僅可以讓你了解數據是什么,還可以讓你了解如何使用這些數據。

定義方法

定義方法的語法與定義函數的語法類似。唯一的區別是在func關鍵字后面添加了一個額外的參數來指定方法的接收者。接收器是你想要定義方法的類型聲明。下面的例子定義了一個struct類型的方法:

package mainimport "fmt"type Creature struct {Name     stringGreeting string
}func (c Creature) Greet() {fmt____Printf("%s says %s", c.Name, c.Greeting)
}func main() {sammy := Creature{Name:     "Sammy",Greeting: "Hello!",}Creature.Greet(sammy)
}

如果運行這段代碼,輸出將是:

OutputSammy says Hello!

我們創建了一個名為Creature的結構體,其中包含NameGreetingstring字段。這個Creature只定義了一個方法Greet。在接收器聲明中,我們將Creature的實例賦值給變量c,這樣我們就可以在組裝fmt____Printf中的問候消息時引用Creature的字段。

在其他語言中,方法調用的接收者通常通過一個關鍵字來引用(例如:’ this ‘或’ self ')。Go將接收器視為與其他變量一樣的變量,因此您可以隨意命名為您喜歡的任何名稱。社區對此參數的首選樣式是接收者類型的第一個字符的小寫版本。在這個例子中,我們使用c,因為接收器類型是Creature

main函數體中,我們創建了一個Creature實例,并為它的NameGreeting字段指定了值。我們在這里通過將類型名和方法名與____連接起來并提供Creature實例作為第一個參數來調用Greet方法。

Go提供了另一種更方便的方法來調用結構體實例的方法,如下例所示:

package mainimport "fmt"type Creature struct {Name     stringGreeting string
}func (c Creature) Greet() {fmt____Printf("%s says %s", c.Name, c.Greeting)
}func main() {sammy := Creature{Name:     "Sammy",Greeting: "Hello!",}sammy.Greet()
}

如果運行這個,輸出將與前面的例子相同:

OutputSammy says Hello!

這個例子和前一個相同,但這次我們使用點表示法來調用Greet

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215417.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215417.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215417.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nodejs微信小程序+python+PHP基于spark的酒店管理系統-計算機畢業設計推薦

目 錄 摘 要 I ABSTRACT II 目 錄 II 第1章 緒論 1 1.1背景及意義 1 1.2 國內外研究概況 1 1.3 研究的內容 1 第2章 相關技術 3 2.1 nodejs簡介 4 2.2 express框架介紹 6 2.4 MySQL數據庫 4 第3章 系統分析 5 3.1 需求分析 5 3.2 系統可行性分析 5 3.2.1技術可行性:…

排序算法——歸并排序

歸并排序(Merge Sort)是計算機科學中非常重要的排序算法之一。它不僅高效、穩定,而且是許多高級排序技術和算法思想的基礎。在本文中,我們將深入探討歸并排序的原理、實現方法,以及它的優缺點。 1. 歸并排序的原理 歸…

Python大模型TensorFlow/PyTorch/Scikit-learn/Keras/OpenCV/Gensim

Python 作為一種高級編程語言,可以用于開發各種大小的模型。以下是一些常見的 Python 大模型,以及它們的優勢、劣勢和使用場景: TensorFlow: 優勢:TensorFlow 是一個非常流行的深度學習庫,具有高度的可擴…

階段五:深度學習和人工智能(掌握使用TensorFlow或PyTorch進行深度學習)

掌握使用TensorFlow或PyTorch進行深度學習需要具備一定的編程基礎和數學基礎,包括編程語言、數據結構、算法、線性代數、概率論和統計學等方面的知識。以下是掌握使用TensorFlow或PyTorch進行深度學習的一些基本要求: 了解深度學習的基本概念和原理&…

目標檢測YOLO系列從入門到精通技術詳解100篇-【目標檢測】計算機視覺(基礎篇)

目錄 前言 幾個高頻面試題目 計算機視覺中常見的錯誤及解決方案 1.翻轉圖像和關鍵點

AnotherRedisDesktopManager安裝使用 (redis可視化客戶端)

下載 下載地址 AnotherRedisDesktopManager 發行版 - Gitee.com 安裝 雙擊安裝 修改安裝路徑 運行

pt36項目短信OAth2.0

5、短信驗證碼 1、注冊容聯云賬號,登錄并查看開發文檔(以下分析來自接口文檔) 2、開發文檔【準備1】:請求URL地址1.示例:https://app.cloopen.com:8883/2013-12-26/Accounts/{}/SMS/TemplateSMS?sig{}ACCOUNT SID# s…

Docker安裝與使用

Docker 1.初識Docker Docker如何解決大型項目依賴關系復雜,不同組件依賴的兼容性問題? Docker允許開發中將應用、依賴、函數庫、配置一起打包,形成可移植鏡像Docker應用運行在容器中,使用沙箱機制,相互隔離 Docker…

phpstorm中使用 phpunit 時的配置和代碼覆蓋率測試注意點

初始化一個composer項目,composer.json配置文件如下 {"name": "zingfront/questions-php","type": "project","require": {"php": "^7.4"},"require-dev": {"phpunit/phpun…

geemap學習筆記024:從Earth Engine中獲取遙感圖像的縮略圖

前言 遙感圖像的縮略圖通常是以較小的數據量對整景影像有一個全面的展示,便于分享和觀察,本節就介紹一下如何獲取遙感圖像的縮略圖。 1 導入庫并顯示地圖 import ee import geemap import osee.Initialize() Map geemap.Map() Map2 加載數據 roi e…

多維時序 | MATLAB實現RIME-CNN-BiLSTM-Multihead-Attention多頭注意力機制多變量時間序列預測

多維時序 | MATLAB實現RIME-CNN-BiLSTM-Multihead-Attention多頭注意力機制多變量時間序列預測 目錄 多維時序 | MATLAB實現RIME-CNN-BiLSTM-Multihead-Attention多頭注意力機制多變量時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 MATLAB實現RIME-…

項目管理工具:選品開發管理的最佳實踐

Zoho Projects是一個功能強大的項目管理工具,可以幫助電商企業實現選品開發過程的有序管理,提升選品開發效率。 以下是使用Zoho Projects進行選品開發管理的步驟: 1.創建項目: 登錄Zoho Projects,在主頁上點擊"新…

NSSCTF Crypto靶場練習,21-30wp

文章目錄 [AFCTF 2018]你能看出這是什么加密么[LitCTF 2023]你是我的關鍵詞(Keyworld)[NSSCTF 2022 Spring Recruit]classic[SWPUCTF 2021 新生賽]crypto4[LitCTF 2023]家人們!誰懂啊,RSA簽到都不會 (初級)[SWPUCTF 2021 新生賽]crypto5[LitCTF 2023]Is …

亞信科技AntDB攜手藍凌軟件,助推企業數字化辦公轉型升級

隨著企業數字化轉型的深入,企業對于協同辦公、移動門戶、數字運營、智能客服等方面的需求越來越高,數智化正成為催生新動能和新優勢的關鍵力量。數字化的辦公平臺可以幫助企業實現各類信息、流程的集中化、數字化和智能化管理,為企業管理者提…

面試 JVM 八股文五問五答第一期

面試 JVM 八股文五問五答第一期 作者:程序員小白條,個人博客 相信看了本文后,對你的面試是有一定幫助的! ?點贊?收藏?不迷路!? 1.JVM內存布局 Heap (堆區) 堆是 OOM 故障最主要的發生區域。它是內存…

大數據畢業設計之前端03:logo、menu的折疊展開實現

關鍵字:BuildAdmin、pinia、logo、aside、menu、菜單折疊、Vue、ElementUI 前言 上一篇文章中,借助aside的實現講了一些開發的小技巧,以及css的解讀。本篇文章主要寫一下如何填充aside的內容。 aside主要是由兩個部分組成的:log…

數據結構與算法-Rust 版讀書筆記-2線性數據結構-棧

數據結構與算法-Rust 版讀書筆記-2線性數據結構-棧 一、線性數據結構概念 數組、棧、隊列、雙端隊列、鏈表這類數據結構都是保存數據的容器,數據項之間的順序由添加或刪除時的順序決定,數據項一旦被添加,其相對于前后元素就會一直保持位置不…

電腦入門基礎知識

1.電腦鍵盤個數一般都是有多少個? 答:一般情況下,電腦鍵盤只有一個。但是,也有一些特殊的情況,例如游戲玩家可能會使用額外的游戲鍵盤,或者一些專業人士可能會使用多個鍵盤來提高工作效率。但是在大多數情…

[Spring~源碼] ControllerAdvice揭秘

在Spring MVC中,我們經常使用ControllerAdvice注解,可以實現全局統一異常處理、全局數據綁定等功能。但是,它的實現原理是什么呢?在本文中,我們將深入探究ControllerAdvice的實現原理。 文章目錄 什么是ControllerAdvi…

docker-compose.yml文件配置詳解

簡介 Compose 是用于定義和運行多容器 Docker 應用程序的工具。通過 Compose,您可以使用 YML 文件來配置應用程序需要的所有服務。然后,使用一個命令,就可以從 YML 文件配置中創建并啟動所有服務。 docker compose文件是一個yaml格式的文件&a…