Go語言中結構體的使用和示例

結構體(簡稱struct)用于創建不同數據類型的成員集合,放入一個單一的變量中。雖然數組用于將相同數據類型的多個值存儲在單一變量中,但結構體用于將不同數據類型的多個值存儲在單一變量中。結構體對于將數據組合在一起以創建記錄非常有用。

聲明結構體

要在Go中聲明一個結構體,請使用type和struct關鍵字:

語法

type 結構體名 struct {成員1 數據類型;成員2 數據類型;成員3 數據類型;...
}

示例

在這里,我們聲明了一個名為Person的結構體類型,其中包含以下成員:name、age、job和salary:

type Person struct {name stringage intjob stringsalary int
}

**提示:**請注意,上述結構體成員具有不同的數據類型。name和job是string類型,而age和salary是int類型。

訪問結構體成員

要訪問結構體的任何成員,使用結構體變量名稱和結構體成員之間的點運算符(.):

示例

package main
import ("fmt")type Person struct {name stringage intjob stringsalary int
}func main() {var pers1 Personvar pers2 Person// Pers1 詳細信息pers1.name = "Hege"pers1.age = 45pers1.job = "Teacher"pers1.salary = 6000// Pers2 詳細信息pers2.name = "Cecilie"pers2.age = 24pers2.job = "Marketing"pers2.salary = 4500// 訪問并打印 Pers1 信息fmt.Println("Name: ", pers1.name)fmt.Println("Age: ", pers1.age)fmt.Println("Job: ", pers1.job)fmt.Println("Salary: ", pers1.salary)// 訪問并打印 Pers2 信息fmt.Println("Name: ", pers2.name)fmt.Println("Age: ", pers2.age)fmt.Println("Job: ", pers2.job)fmt.Println("Salary: ", pers2.salary)
}

結果:

Name: Hege
Age: 45
Job: Teacher
Salary: 6000
Name: Cecilie
Age: 24
Job: Marketing
Salary: 4500

將結構體作為函數參數傳遞

您也可以將結構體作為函數參數傳遞,如下所示:

示例

package main
import ("fmt")type Person struct {name stringage intjob stringsalary int
}func main() {var pers1 Personvar pers2 Person// Pers1 詳細信息pers1.name = "Hege"pers1.age = 45pers1.job = "Teacher"pers1.salary = 6000// Pers2 詳細信息pers2.name = "Cecilie"pers2.age = 24pers2.job = "Marketing"pers2.salary = 4500// 通過調用函數打印 Pers1 信息printPerson(pers1)// 通過調用函數打印 Pers2 信息printPerson(pers2)
}func printPerson(pers Person) {fmt.Println("Name: ", pers.name)fmt.Println("Age: ", pers.age)fmt.Println("Job: ", pers.job)fmt.Println("Salary: ", pers.salary)
}

結果:

Name: Hege
Age: 45
Job: Teacher
Salary: 6000
Name: Cecilie
Age: 24
Job: Marketing
Salary: 4500

最后

為了方便其他設備和平臺的小伙伴觀看往期文章:公眾號搜索Let us Coding,或者掃描下方二維碼,關注公眾號,即可獲取最新文章。

看完如果覺得有幫助,歡迎點贊、收藏關注

在這里插入圖片描述

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

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

相關文章

openGL之紋理 :第二課

#include "glew.h" #include "glfw3.h" #include "SOIL2.h"//如何解析輸入的數據流 0,1,2 分三部分 GLchar * vertextSrc " #version 330 core \n \layout (location 0) in vec3 position; \layout (location 1) in vec3 col…

【精選】??通道熱點加持的LW-ResNet:小麥病害智能診斷與防治系統

1.研究背景與意義 小麥是世界上最重要的糧食作物之一,但由于病害的侵襲,小麥產量和質量受到了嚴重的威脅。因此,開發一種高效準確的小麥病害識別分類防治系統對于保障糧食安全和農業可持續發展具有重要意義。 傳統的小麥病害識別分類方法主…

Feign

目錄 RestTemplate方式調用存在的問題: 定義和使用Feign客戶端 自定義Feign的配置 性能優化 Feign的最佳實踐 Feign的使用步驟: 1、引入依賴 2、添加EnableFeignClients注解 3、編寫FeignClient接口 4、使用FeignClient中定義的方法代替RestTemplate Feign的…

什么是遷移學習

1 遷移學習概述 遷移學習(Transfer Learning)是機器學習中的一種方法,它允許模型將從一個任務中學到的知識應用到另一個相關的任務中。這種方法在數據稀缺的情況下尤為有用,因為它減少了對大量標記數據的需求。遷移學習已成為深度…

Node使用Nvm安裝雙版本切換(node兩個版本同時用怎么辦?不同的項目Node版本要求不一樣怎么辦?)

先把node.js卸載 開始—>添加刪除程序—>node npm -v node -v //檢查是否還存在,卸載成功就行了NVM下載 github下載 百度網盤下載 打開安裝包以管理員身份安裝,要是記得這個路徑并且必須全是英文 使用nvm安裝兩個使用的node版本 cmd以管理員…

計算機組成原理2

1.浮點數 2.IEEE 754 3.存儲器的性能指標 4.存儲器的層次化結構 主存類似手機運行內存8g ,輔存類似手機內存128g.... 輔存必須先通過主存才能被cpu接收,就例如微信打開那個月亮小人界面兩三秒就是主存在讀取輔存的程序然后被cpu接收運行。 5.主存儲…

Greenplum的數據庫年齡檢查處理

概述 Greenplum是基于Postgresql數據庫的分布式數據庫,而PG數據庫在事務及多版本并發控制的實現方式上很特別,采用的是遞增事務id的方法,事務id大的事務,認為比較新,反之事務id小,認為比較舊。 事務id的上…

經典的回溯算法題leetcode組合問題整理及思路代碼詳解

目錄 組合問題 leetcode77題.組合 leetcode216題.組合總和III leetcode40題.組合總和II leetcode39題.組合總和 倘若各位不太清楚回溯算法可以去看我上一篇文章。 回溯算法詳解-CSDN博客 組合問題 一般組合和排列類的問題我們都會轉化成一個樹形問題,更便于…

26. 刪除有序數組中的重復項(remove-duplicates-from-sorted-array)

26. 刪除有序數組中的重復項(remove-duplicates-from-sorted-array) 給你一個 非嚴格遞增排列 的數組 nums ,請你** 原地** 刪除重復出現的元素,使每個元素 只出現一次 ,返回刪除后數組的新長度。元素的 相對順序 應該保持 一致 。然后返回 …

批量創建表空間數據文件(DM8:達夢數據庫)

DM8:達夢數據庫 - - 批量創建表空間數據文件 環境介紹1 批量創建表空間SQL2 達夢數據庫學習使用列表 環境介紹 在某些場景(分區表子表)需要批量創建表空間,給不同的表使用,以下代碼是批量創建表空間的SQL語句; 1 批量創建表空間SQL --創建 24個數據表空間,每個表空間有3個數…

強化學習小筆記 —— 如何選擇合適的更新步長

在強化學習中,動作價值函數的更新可以使用增量法,如下所示: Q k 1 k ∑ i 1 k r i 1 k ( r k ∑ i 1 k ? 1 r i ) 1 k ( r k ( k ? 1 ) Q k ? 1 ) 1 k ( r k k Q k ? 1 ? Q k ? 1 ) Q k ? 1 1 k [ r k ? Q k ? 1 ] \beg…

Linux寶塔面板搭建Discuz論壇, 并內網穿透實現公網訪問

Linux寶塔面板搭建Discuz論壇, 并內網穿透實現公網訪問 文章目錄 Linux寶塔面板搭建Discuz論壇, 并內網穿透實現公網訪問前言1.安裝基礎環境2.一鍵部署Discuz3.安裝cpolar工具4.配置域名訪問Discuz5.固定域名公網地址6.配置Discuz論壇 📷 江池…

低代碼平臺推薦:五大低代碼廠商誰的模式更“合適”

隨著數字化時代的到來,低代碼開發平臺作為提高數字生產力的工具正受到越來越多企業的關注,市面上的低代碼產品和廠商更是“亂花漸欲迷人眼”。 各家產品不僅功能各有不同,甚至商機都有區別的情況,如何做好產品選型已然成了采購企…

C語言——指針(一)

📝前言 這篇文章主要帶大家初步認識一下指針,供大家理解參考。 主要歸納與講解: 1,指針與指針變量 2,指針的基本使用(如何定義,初始化,引用) 🎬個人簡介&…

計算方法 期末總結

思維導圖 緒論 算法的性質: 有窮性、確切性、有輸入輸出、可行性 算法的描述方法: 自然語言、偽代碼、流程圖、N-S流程圖 算法設計思想: 化大為小的縮減技術:二分法化難為易的校正技術:開方法化粗為精的松弛技術&a…

無需公網IP,使用內網穿透實現公網訪問本地OpenWRT管理界面

文章目錄 1.openWRT安裝cpolar2.配置遠程訪問地址3.固定公網地址 簡單幾步實現在公網環境下遠程訪問openWRT web 管理界面,使用cpolar內網穿透創建安全隧道映射openWRT web 界面面板443端口,無需公網IP,無需設置路由器。 1.openWRT安裝cpola…

SpringBoot使用ObjectMapper之Long和BigDemical類型的屬性字符串處理,防止前端丟失數值精度

SpringBoot使用ObjectMapper之Long和BigDemical類型的屬性字符串處理,防止前端丟失數值精度! 方式一:注解 使用注解 JsonFormat(shape JsonFormat.Shape.STRING),如下: import com.fasterxml.jackson.annotation.JsonFormat; …

在arm 64 環境下使用halcon算法

背景: halcon,機器視覺領域神一樣得存在,在windows上,應用得特別多, 但是arm環境下使用得很少。那如何在arm下使用halcon呢。按照官方說明,arm下只提供了運行時環境,并且需要使用價值一萬多人民…

設計高手的秘密武器:5款讓平面作品更出彩的軟件

平面設計是一種迷人而多樣化的藝術形式,它結合了顏色、形狀、排版和創造力,通過圖像和文本傳達信息。市場上有各種各樣的平面設計軟件,選擇合適的設計軟件是成為優秀設計師的重要一步。為了降低軟件成本,大多數設計師會優先使用免…

編譯原理之LL(1)語法分析實驗(附完整C/C++代碼與測試)

一、實驗內容與要求 先從鍵盤讀入要分析的文法,由程序自動構造FIRST、FOLLOW 集以及SELECT集合,判斷是否為LL (1)文法。 分析文法為G[E]: (0)E→ TE’ (1)E’→ TE’ (2&#xff…