」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 學習 Go 結構最終如何讓我愛上編碼

學習 Go 結構最終如何讓我愛上編碼

發佈於2024-11-08
瀏覽:145

「我仍然記得早期與代碼搏鬥的日子。
How Learning Go Structs Finally Made Me Love Coding

基本的東西?我正要到那裡。但後來出現了結構體,一切都變得模糊起來。我不斷地破壞東西,我的程式碼一團糟。我做錯了什麼?
直到我坐下來,學習了 Go 結構體的基礎知識,並開始有效地使用它們,事情才終於有了進展。那是轉捩點。突然間,程式碼變得更有組織、更有效率、更乾淨。它改變了我編程的方式,我開始享受前所未有的編碼樂趣。 ”
如果您也有同樣的想法,想知道為什麼結構如此強大,那麼這篇文章就是為您準備的。讓我帶您經歷揭開結構神秘面紗的旅程,並向您展示它們如何改變您的編碼遊戲!

How Learning Go Structs Finally Made Me Love Coding

什麼是結構體?
在 Go 中,結構就像一個藍圖,可讓您將不同類型的資料捆綁在一起。將其視為用於對人、汽車或書籍等複雜實體進行建模的自訂資料結構。
例如,Person 結構可以保存人員姓名、年齡和性別等字段,非常適合將相關資訊分組。
為什麼要使用結構體?
結構可協助您將相關資料組織和捆綁在一起,從而更輕鬆地管理複雜的資料模型。無論您正在建立一個追蹤用戶、產品還是庫存的應用程序,結構都允許您對不同類型的資料進行分組,就像地址如何包含街道、城市和郵政編碼一樣。
聲明結構體:基礎
語法非常簡單。您可以使用關鍵字 type 定義一個結構體,後面跟著結構體名稱,然後是大括號內的欄位:



type Person struct {
    Name   string
    Age    int
    Gender string
}


現在您有一個包含三個欄位的 Person 結構:Name(字串)、Age(int)和 Gender(字串)。

存取與修改結構體欄位

要存取結構體的字段,只需使用點 (.) 運算子:


fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
fmt.Println("Gender:", person.Gender)



更改欄位?簡單的!您可以像修改任何其他變數一樣修改這些值:


person.Age = 26
fmt.Println("Updated Age:", person.Age)


為什麼程式設計師不信任結構?
因為他們不想處理他們的「領域」
How Learning Go Structs Finally Made Me Love Coding

結構方法:新增行為

事情變得更有趣了。您可以將方法附加到結構以賦予它們行為。這就像是賦予結構做事的能力!

讓我們為 Person 結構定義一個 Greet 方法:


func (p Person) Greet() string {
    return "Hello, my name is "   p.Name
}



現在您可以讓對方向您打招呼:


fmt.Println(person.Greet())



具有嵌套結構的結構: 讓事情變得複雜,但又簡單

Go 結構體可以在其中保存其他結構體,當您想要對更複雜的資料進行建模時,這非常有用。想像一個 Student 結構,其中包含一個完整配置的 Address 結構:


type Address struct {
    City  string
    State string
}

type Student struct {
    Name    string
    Age     int
    Address Address
}



現在您可以建立一個學生並存取嵌套字段,如下所示:


student := Student{
    Name: "Fred Gitonga",
    Age:  21,
    Address: Address{
        City:  "Kisumu",
        State: "Mamboleo",
    },
}

fmt.Println(student.Name, "lives in", student.Address.City)



“程式必須編寫供人閱讀,並且只是順便供機器執行。” — 哈羅德·阿貝爾森

結構體的常見錯誤

在使用結構之前,請注意以下常見陷阱:

  1. 未初始化的字段:如果您不初始化字段,Go 會自動為字段分配預設的零值(例如整數為 0 或字串為 "")。
  2. 不需要時使用指標:對於小型結構,按值傳遞它們通常比按引用傳遞更有效。

熟能生巧!

  1. 簡單:建立一個包含標題、作者和頁碼欄位的 Book 結構。寫一個顯示書籍資訊的方法。
  2. 中級:建立一個包含多個 Book 結構的 Library 結構。編寫方法來添加書籍並列出圖書館中的所有書籍。
  3. 高級:建造車輛結構並使用車隊結構管理車隊,完成按年份添加、刪除和搜尋車輛。

結論:關鍵要點

  1. 結構體對於 Go 中相關資料的分組至關重要。
  2. 您可以使用方法甚至嵌套結構來增強結構。
  3. 當您需要修改函數內的原始結構時,請使用指標。

如果 Go 結構體可以讓我的編碼變得更容易,那麼它們肯定也會為你做同樣的事情。快樂編碼!

How Learning Go Structs Finally Made Me Love Coding

版本聲明 本文轉載於:https://dev.to/githaiga22/how-learning-go-structs-finally-made-me-love-coding-2pp0?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • C++ 如何處理十進位資料型別?
    C++ 如何處理十進位資料型別?
    C 中的十進位資料型別 C 提供了各種資料型別來處理數值,但令人驚訝的是,十進位資料型別本身不支援。在處理精確的十進制值或與使用十進制格式的系統互動時,這可能是一個限制。 實作選項雖然 C 不提供內建十進位類型,但有兩種與他們合作的方法:1。 C Decimal TR 擴充:某些編譯器(例如gcc)...
    程式設計 發佈於2024-11-08
  • 為什麼我的 Python 中的凱撒密碼函數只顯示最後一個移位的字元?
    為什麼我的 Python 中的凱撒密碼函數只顯示最後一個移位的字元?
    Python 中的凱撒密碼函數:加密字串在Python 中實作凱撒密碼函數時,會出現一個常見問題,即最終的加密文字僅顯示最後移動的字元。要解決此問題,有必要了解導致此行為的問題。 在提供的程式碼中,循環迭代明文中的每個字元。對於字母字符,它根據提供的移位值來移位字符的 ASCII 代碼。但是,每個移...
    程式設計 發佈於2024-11-08
  • 4 快速​​部署PHP
    4 快速​​部署PHP
    Servbay 已成為輕鬆配置開發環境的首要工具。在本指南中,我們將示範如何快速、安全地部署 PHP 8.2,強調 Servbay 致力於簡化部署流程。 先決條件 開始之前,請確保您的裝置上安裝了 Servbay。您可以直接從Servbay官方網站下載。安裝直覺;只需按照提示操作,...
    程式設計 發佈於2024-11-08
  • AngularJS 指令中的 Replace 屬性何時被棄用?
    AngularJS 指令中的 Replace 屬性何時被棄用?
    為什麼AngularJS 已棄用指令中的替換屬性AngularJS 指令中的替換屬性由於其複雜性和更好的出現而被棄用替代方案。根據官方 AngularJS API 文檔,在未來的版本中它將預設為 false。 棄用的原因AngularJS 團隊發現了替換屬性的幾個問題:困難的語義: 它導致了屬性合併...
    程式設計 發佈於2024-11-08
  • 如何在 JavaScript 和 jQuery 中無縫存取 PHP 變數?
    如何在 JavaScript 和 jQuery 中無縫存取 PHP 變數?
    在JavaScript 或jQuery 中存取PHP 變數:避免Echo 過載許多開發人員遇到在JavaScript 和jQuery 中存取PHP 變數的挑戰。傳統方法涉及回顯 PHP 標籤內的變量,例如:<?php echo $variable1; ?> <?php echo $...
    程式設計 發佈於2024-11-08
  • 釋放 Claude AI:用於經濟實惠且靈活的 AI 整合的非官方 API
    釋放 Claude AI:用於經濟實惠且靈活的 AI 整合的非官方 API
    由 Anthropic 開發的 Claude AI 以其令人印象深刻的能力在人工智慧界掀起了波瀾。然而,官方 API 對於許多開發人員和小型企業來說可能過於昂貴。這就是我們的非官方 Claude AI API 的用武之地,它提供了一個更實惠、更靈活的解決方案,將 Claude 的力量整合到您的專案中...
    程式設計 發佈於2024-11-08
  • 如何使用時間包確定 Go 中一個月的最後一天?
    如何使用時間包確定 Go 中一個月的最後一天?
    使用Time.Time 確定給定月份的最後一天處理基於時間的資料時,通常需要確定指定月份的最後一天。無論該月有 28 天、29 天(閏年)還是 30 天或 31 天,這都會使這成為一項具有挑戰性的任務。 時間包解決方案Go 時間包其日期函數提供了一個方便的解決方案。 Date 的語法為:func D...
    程式設計 發佈於2024-11-08
  • 如何在不支援的瀏覽器中實現“背景濾鏡”效果?
    如何在不支援的瀏覽器中實現“背景濾鏡”效果?
    CSS:為不可用的背景過濾器提供替代方案CSS 中的背景過濾器功能在大多數現代瀏覽器中仍然無法訪問。雖然我們預計其未來的支持,但發現替代解決方案勢在必行。 實現類似效果的一種方法是採用具有微妙透明度的背景。下面的 CSS 程式碼示範了這個方法:/* Slightly transparent fall...
    程式設計 發佈於2024-11-08
  • Python 的 len() 函數對於不同的資料結構有多有效率?
    Python 的 len() 函數對於不同的資料結構有多有效率?
    理解Python內建資料結構中len()函數的成本Python中內建len()函數是決定各種資料結構長度的重要工具。它的效率至關重要,尤其是在處理大型資料集時。本文深入研究了 len() 對於不同內建資料類型(例如列表、元組、字串和字典)的計算成本。 O(1) 跨內建類型的複雜性關鍵要點是 len(...
    程式設計 發佈於2024-11-08
  • 如何在 Python 中存取 Windows 剪貼簿文字?
    如何在 Python 中存取 Windows 剪貼簿文字?
    在 Python 中存取 Windows 剪貼簿文字從 Windows 剪貼簿檢索文字是程式設計中的常見任務。本文探討如何使用 Python 的 win32clipboard 模組來實現此目的。 pywin32 和 win32clipboardwin32clipboard 模組是 pywin32 的...
    程式設計 發佈於2024-11-08
  • 如何修復 CentOS 5 上由於檔案權限問題導致的 Nginx 403 Forbidden 錯誤?
    如何修復 CentOS 5 上由於檔案權限問題導致的 Nginx 403 Forbidden 錯誤?
    Nginx 403 Forbidden:文件存取權限故障排除當在Nginx 中遇到令人沮喪的「403禁止」錯誤時,確定根本原因可以是一個挑戰。此錯誤通常表示對檔案或目錄的存取被拒絕。在該特定場景中,使用者在 CentOS 5 上使用 PHP-FPM 配置了 Nginx,但無法提供指定來源目錄中的任何...
    程式設計 發佈於2024-11-08
  • React 中的函數和類別元件與 TypeScript
    React 中的函數和類別元件與 TypeScript
    在使用 TypeScript 的 React 中,我們可以使用兩種主要方法來建立元件:功能元件和類別元件。兩種方法都允許使用 props 和 state,但使用的範例略有不同。 TypeScript 透過提供靜態類型進一步增強了開發安全性,這使我們能夠精確定義 props 和 state 的形狀。 ...
    程式設計 發佈於2024-11-08
  • 如何使用 Clang 檢查編譯器產生的 C++ 模板實例化程式碼?
    如何使用 Clang 檢查編譯器產生的 C++ 模板實例化程式碼?
    檢查C 語言中編譯器產生的範本實例化在C 語言中,範本函數和類別允許透過定義通用功能來重用程式碼專門針對不同類型。要了解編譯器為模板實例化產生的程式碼,了解這些實例化的函數或類別會很有幫助。 Clang 的AST 列印功能一個工具提供這種可見性的是Clang 的抽象語法樹(AST) 列印功能,Cla...
    程式設計 發佈於2024-11-08
  • 我從使用 Vue.js 建立計算器中學到了什麼
    我從使用 Vue.js 建立計算器中學到了什麼
    對於我的第四個項目,我使用 Vue.js 開發了一個 計算器 應用程式。對於理解如何處理使用者輸入、顯示動態結果以及使用 JavaScript 執行計算來說,這是一次寶貴的經驗。以下是我在建立此應用程式時學到的主要經驗教訓的細分。 1. 處理使用者輸入並更新顯示 計算器需要接受使用...
    程式設計 發佈於2024-11-08
  • 在 Kubernetes 上設定 JFrog Artifactory 並連接 Spring Boot 應用程式
    在 Kubernetes 上設定 JFrog Artifactory 並連接 Spring Boot 應用程式
    本文档提供有关在 Kubernetes 集群中设置 JFrog Artifactory 的指南。它作为开发人员在本地计算机上运行的 Kubernetes 环境上安装和配置 JFrog 的基本教程。 设置本地环境来构建DevOps资源 我使用 Docker 容器为多个应用程序设置工作环...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3