GO 語言學習 之 結構體

????????在 Go 語言中,結構體(struct)是一種用戶自定義的數據類型,它可以包含多種不同類型的數據組合在一起。結構體為組織和管理相關數據提供了一種有效的方式,常用于表示現實世界中的對象或概念。如果你懂C/C++,那么這個數據結構理解起來挺容易的,只是形式上略有不同。

結構體定義

type <結構體名>?struct {

? ? ? ? ?<成員1> <類型1>

? ? ? ? ?<成員2> <類型2>

? ? ? ? ?<成員3> <類型3>

? ? ? ? ...

}

  • type?關鍵字:表示定義了一個新類型。
  • struct 關鍵字:表示新的類型是一個結構體類型
  • 結構體可以包含多個成員,每個成員的類型可以相同也可以不同
  • 成員命名也區分大小寫,大駝峰命名外部包是否可以被引用
  • 結構體可以有自己的成員函數(這里后續再補充)
  • 成員函數也是要有大小寫的命名,大駝峰命名外部包可以引用
  • 作為函數形式參數的時候,通常是傳遞指針類型,因為結構體的內容可能會很大
  • 另外,指針類型可以直接修改原始數據,把修改的結果帶回來,所以使用的時候也要注意
  • 還有一種特殊的用法,匿名結構
  • 指針變量與普通變量在訪問結構體成員的時候都使用 . 的方式訪問 (與C語言不一樣)
  • 結構體支持嵌套使用,最常見的例子就是解析配置 JSON 和 Yaml 內容的時候

結構體的使用

package mainimport "fmt"type Student struct {NumID    int       // 學號Name     string    // 姓名ClassID  string    // 班級Birthday string    // 生日Age      int       // 年齡Sex      string    // 性別IsAccommodation bool // 是否住校 true 住校 false 不住
}func (s *Student)StudentInfoPrint() {fmt.Println("學號 :", s.NumID)fmt.Println("姓名 :", s.Name)fmt.Println("班級 :", s.ClassID)fmt.Println("生日 :", s.Birthday)fmt.Println("年齡 :", s.Age)fmt.Println("性別 :", s.Sex)fmt.Println("是否住校 :", s.IsAccommodation)
}func main() {stu1 := Student {1, "張三", "一年級", "2020-01-12", 6, "男", true}fmt.Println("===== stu1 =====")stu1.StudentInfoPrint()var stu2 Studentfmt.Println("===== stu2 =====")stu2.StudentInfoPrint()stu3 := &Student{}stu3.Name = "李四"fmt.Println("===== stu3 =====")stu3.StudentInfoPrint()stu4 := &Student{NumID: 4,Name: "王五",ClassID: "二年級",Birthday: "2018-03-12",Age: 7,Sex: "男",}fmt.Println("===== stu4 =====")stu4.StudentInfoPrint()stu5 := new(Student)stu5.NumID = 5stu5.Name = "朱六"stu5.Sex = "女"fmt.Println("===== stu5 =====")stu5.StudentInfoPrint()fmt.Println("匿名結果體使用")stu6 := struct {name stringage int}stu6.name = "劉七"stu6.age = 10fmt.Println("===== stu6 =====")fmt.Println("name : ", stu6.name)fmt.Println("age : ", stu6.age)
}

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

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

相關文章

ubuntu 啟動SSH 服務

在Ubuntu系統中&#xff0c;啟動SSH服務需要確保SSH服務已經安裝&#xff0c;并且正確配置。以下是詳細步驟&#xff1a; 一、檢查SSH服務是否已安裝 檢查SSH服務是否安裝 打開終端&#xff08;Terminal&#xff09;。 輸入以下命令來檢查SSH服務是否已安裝&#xff1a; bash…

【3.4 漫畫分布式共識算法】

3.4 漫畫分布式共識算法 ?? 人物介紹 小明:對分布式共識算法好奇的開發者架構師老王:分布式系統專家,精通各種共識算法?? 共識算法概述 小明:“老王,分布式系統中為什么需要共識算法?” 架構師老王:“想象一下,你有多個服務器需要就某個決定達成一致,比如選出一…

程序計數器(PC)是什么?

程序計數器&#xff08;PC&#xff09;是什么&#xff1f; 程序計數器&#xff08;PC&#xff09;詳解 程序計數器&#xff08;Program Counter, PC&#xff09; 是CPU中的一個關鍵寄存器&#xff0c;用于存儲下一條待執行指令的內存地址。它控制程序的執行流程&#xff0c;是…

影樓精修-智能修圖Agent

今天給大家介紹一篇令人驚喜的論文《JarvisArt: Liberating Human Artistic Creativity via an Intelligent Photo Retouching Agent》 論文地址&#xff1a;https://arxiv.org/pdf/2506.17612 Code&#xff08;暫無代碼&#xff09;&#xff1a;https://github.com/LYL1015/…

帕金森與健康人相關數據和處理方法(一些文獻的記錄)

主要的帕金森腦電數據進行一些分類分析的文章。 帕金森病 2004 年至 2023 年腦電圖研究的文獻計量分析對于研究的分析以及關鍵研究和趨勢從腦電圖信號中檢測帕金森病&#xff0c;采用離散小波變換、不同熵度量和機器學習技術使用機器學習和深度學習方法分析不同模態的數據以診…

優象光流模塊,基于python的數據讀取demo

優象光流模塊&#xff0c;型號UP-FLOW-LC-302-3C&#xff0c;準備將其應用于設備的運行速度測量&#xff0c;物美價廉。 廠家提供的數據格式表&#xff1a; 實測用python的serial包readline()函數讀取到的幀數據&#xff1a; 與官方的給定略有出入&#xff0c;不過主要字節的順…

模型部署與推理--利用libtorch模型部署與推理

文章目錄 1從pytorch導出pt文件2下載并配置libtorch3推理4結果&#xff1a;時間對比&#xff1a;推理結果&#xff1a; 參考 以deeplabv3plus為例講解怎么利用libtorch部署在c上模型。關于libtorch和pt文件請參考我之前的博客。 1從pytorch導出pt文件 if __name__ __main__: …

芯得EP.21丨基于極海APM32F4的TencentOS Tiny實時操作系統移植詳解

《APM32芯得》系列內容為用戶使用APM32系列產品的經驗總結&#xff0c;均轉載自21ic論壇極海半導體專區&#xff0c;全文未作任何修改&#xff0c;未經原文作者授權禁止轉載。 如遇技術問題&#xff0c;可前往 極海半導體開發者論壇 1 前言 最近在了解TencentOS的特性&#xf…

【Docker基礎】Docker數據持久化與卷(Volume)介紹

目錄 1 Docker數據持久化概述 1.1 為什么需要數據持久化 1.2 Docker數據管理方式對比 2 Docker卷(Volume)核心概念 2.1 數據卷基本特性 2.2 卷類型詳解 2.2.1 命名卷(Named Volumes) 2.2.2 匿名卷(Anonymous Volumes) 2.2.3 主機綁定卷(Host Volumes) 3 數據卷操作全…

yolo8,10,11之處理不平衡類別問題

一、前言 使用 yolo11進行目標檢測時&#xff0c;發現訓練數據集存在類別數量不平衡的情況&#xff0c;查閱了一下資料&#xff0c;可采取以下方法。 二、樣本增強 少數類的框是獨立存在于圖片中&#xff0c;則可通過顏色、亮度、幾何變換等方法人為增加少數類的樣本數&#x…

基于 51 單片機做的二十四點小游戲

用 51 單片機做的二十四點小游戲 一、任務要求 設計一個模擬紙牌 24 點玩法的單片機模擬器&#xff0c;由單片機隨機發出四個牌點&#xff0c;測試者在實驗板按鍵上輸入計算過程&#xff0c;單片機判斷計算結果是否正確&#xff0c;并評定測試者的成績。 【基本要求】&#…

Hadoop WordCount 程序實現與執行指南

Hadoop WordCount 程序實現與執行指南 下面是使用Python實現的Hadoop WordCount程序,包含完整的Mapper和Reducer部分。 這個程序可以在PyCharm中本地測試,也可以部署到遠程Hadoop集群上運行。 mapper.py import sys# 從標準輸入讀取數據 for line in sys.stdin:# 移除行首…

數據可視化:5 分鐘讀懂其核心價值與技術實踐

為什么數據可視化成為企業數字化轉型的“必修課”&#xff1f;在信息爆炸的時代&#xff0c;企業每天產生海量數據&#xff0c;從客戶行為到銷售業績&#xff0c;從供應鏈運作到市場趨勢。如何從這些原始數據中快速提煉有價值的信息&#xff1f;如何將復雜數據轉化為直觀易懂的…

Python 量化交易安裝使用教程

一、什么是量化交易&#xff1f; 量化交易是通過數學模型和計算機程序&#xff0c;自動化地執行證券買賣決策的交易方式。Python 憑借其豐富的生態和強大的數據處理能力&#xff0c;成為量化交易的首選語言。 二、環境準備 建議使用 Anaconda 安裝 Python 3.8&#xff0c;方便…

從 PostgreSQL 到 DolphinDB:數據實時同步一站式解決方案

隨著越來越多的用戶使用 DolphinDB&#xff0c;各種不同的應用的場景也對 DolphinDB 的數據接入提出了不同的要求。部分用戶需要將 PostgreSQL 的數據實時同步到 DolphinDB 中來&#xff0c;以滿足在 DolphinDB 中使用數據的實時性需求。本篇教程將介紹使用 Debezium 來實時捕獲…

關于聯詠(Novatek )白平衡色溫坐標系探究

目錄 一、疑問 二、結論 三、分析 四、釋疑 五、仿真模擬 一、疑問 為什么Novatek的白平衡色溫坐標系是這個樣子的呢?各條直線和曲線分別代表什么含義呢?色溫坐標系中所標定的參數代表什么含義呢?如何標定新增一些特殊的光源呢?二、結論

Protein FID:AI蛋白質結構生成模型評估新指標

一、引言&#xff1a;蛋白質生成模型面臨的評估挑戰 近年來&#xff0c;AI驅動的蛋白質結構生成模型取得了令人矚目的進展&#xff0c;但如何有效評估這些模型的質量卻一直是一個懸而未決的問題。雖然實驗驗證仍然是金標準&#xff0c;但計算機模擬評估對于快速開發和比較機器…

Vim 高效編輯指南:從基礎操作到塊編輯的進階之路

文章目錄?? 一、基礎編輯命令(生存必備)? 二、進階操作:可視化塊模式 (Ctrl+v)典型應用場景?? 三、效率提升技巧?? 四、配置建議(~/.vimrc)結語作為開發者最強大的文本編輯器之一,Vim 的高效操作離不開其命令模式(Normal Mode)。本文將系統性地介紹 Vim 的核心編…

docker學習第一天框架學習以及在redhat7.9安裝操作

一.docker是什么。 Docker 是一個開源的容器化平臺&#xff0c;通過將應用程序及其依賴項&#xff08;如代碼、運行時環境、系統工具等&#xff09;打包到輕量級、可移植的容器中&#xff0c;實現「一次構建&#xff0c;處處運行」的現代化開發模式。它利用了 Linux 內核特性來…

QT控件 使用Font Awesome開源圖標庫修改QWidget和QML兩種界面框架的控件圖標

又一個月快要結束了&#xff0c;在這里總結下分別在QWidget和QML兩種界面設計模式中應用Font Awesome開源圖標庫&#xff0c;修改界面的顯示圖標效果&#xff0c; AriaNg是aria2的可視化web界面工具,其中的圖標大都是Font AWesome中的字體圖標&#xff0c;某位曾經嘗試將AriaNg…