【Go語言圣經1.1】

目標

學習Go 的編譯方式、包的組織方式以及工具鏈的統一調用方式

概念與定義

  1. package
    • Go 語言通過包來組織代碼。包類似于其它語言的庫librarries或模塊modules,每個包通常對應一個目錄,目錄中的所有 .go 文件都屬于同一個包。
    • 特殊的 main 包 :
      當代碼使用 package main 聲明時,表示這是一個可獨立執行的程序而非一個庫。程序的執行入口就是 main 函數
  2. import
    • 通過 import 語句,編譯器能夠識別代碼中所需的外部依賴,若導入錯誤或缺少必要包,程序將無法編譯。這種機制保證了代碼的整潔和依賴的明確性
  3. 主函數 func main
    • func main() 是程序的執行入口。所有可執行程序都必須包含一個 main 函數。一般情況下,main 函數會調用其它函數和包中的功能來實現實際業務邏輯
  4. 編譯、運行與工具鏈:Go 語言是編譯型語言,它會將源碼編譯為靜態鏈接的二進制可執行文件。
  5. Go 語言的工具鏈將源代碼及其依賴轉換成計算機的機器指令(譯注:靜態編譯)。Go 語言提供的工具都通過一個單獨的命令?go?調用,go?命令有一系列子命令。
    • go run:臨時編譯與執行
      • 編譯一個或多個以。.go?結尾的源文件,鏈接庫文件,并運行最終生成的可執行文件,適合臨時實驗和調試。
    • go build:編譯生成可執行二進制文件
      • 在 Linux 或 macOS 下,生成的文件名與源碼文件相同;在 Windows 下則會加上 .exe 后綴。
      • 由于是靜態編譯,生成的可執行文件包含了所有依賴的代碼(go程序可以獨立運行),因此運行時無需擔心系統庫更新造成沖突或環境依賴問題,便于分發和部署。
    • 源碼獲取:go get。
      可以自動下載源碼到 $GOPATH/src/... 目錄。需要先安裝版本管理工具(如 Git 或 Hg)并設置好 GOPATH 環境變量。
  6. 自動插入分號:編譯器會根據特定符號后的換行符自動插入分號。這要求開發者在書寫代碼時注意換行位置,否則可能導致解析錯誤。
    • 函數的左大括號 { 必須與函數聲明在同一行上。
    • 在表達式中,換行位置也有講究:例如,在運算符 + 后換行通常不會有問題,而在運算符 + 前換行則可能被錯誤地插入分號。
  7. gofmt 工具會自動將代碼格式化成統一的風格
    • 許多文本編輯器可以配置在保存文件時自動運行 gofmt,確保每次提交的代碼都符合標準格式。

要點(案例)

package mainimport "fmt"func main(){fmt.Println("hello, world")
}

使用 go run helloworld.go 命令可以編譯并立即運行該程序

運行 go build helloworld.go 會編譯生成一個可執行二進制文件。

示例代碼倉庫托管在 gopl.io 上。通過 go get gopl.io/ch1/helloworld 命令,可以自動下載源碼到 $GOPATH/src/gopl.io/ch1/helloworld 目錄。需要先安裝版本管理工具(如 Git 或 Hg)并設置好 GOPATH 環境變量。

文件中 package 聲明必須位于最上方,緊隨其后的是 import 聲明。之后是函數func、變量var、常量const和類型type的聲明。雖然這些聲明的順序不影響編譯,但規范化的順序有助于代碼的可讀性和維護性。

函數的定義由 func 關鍵字開始,后面跟上函數名、參數列表、返回值列表和函數體。

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

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

相關文章

主流大語言模型中Token的生成過程本質是串行的

主流大語言模型中Token的生成過程本質是串行的 flyfish 1. 串行生成 自回歸模型的核心邏輯: 大模型(如GPT-2)采用自回歸架構,每個Token的生成必須基于已生成的完整歷史序列。例如,生成“今天天氣很好”時&#xff1a…

基于PySide6的CATIA零件自動化著色工具開發實踐

引言 在汽車及航空制造領域,CATIA作為核心的CAD設計軟件,其二次開發能力對提升設計效率具有重要意義。本文介紹一種基于Python的CATIA零件著色工具開發方案,通過PySide6實現GUI交互,結合COM接口操作實現零件著色自動化。該方案成…

Python——計算機網絡

一.ip 1.ip的定義 IP是“Internet Protocol”的縮寫,即“互聯網協議”。它是用于計算機網絡通信的基礎協議之一,屬于TCP/IP協議族中的網絡層協議。IP協議的主要功能是負責將數據包從源主機傳輸到目標主機,并確保數據能夠在復雜的網絡環境中正…

Python實例:PyMuPDF實現PDF翻譯,英文翻譯為中文,并按段落創建中文PDF

基于PyMuPDF與百度翻譯的PDF翻譯處理系統開發:中文亂碼解決方案與自動化排版實踐 一 、功能預覽:將英文翻譯為中文后創建的PDF 二、完整代碼 from reportlab.lib.pagesizes import letter from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

xunruicms失敗次數已達到5次,已被禁止登錄怎么處理?

針對遇到的“xunruicms失敗次數已達到5次,已被禁止登錄”的問題以下是幾種處理方法: 開啟開發者模式: 您可以開啟開發者模式來忽略賬號的禁止登錄限制。具體操作步驟如下: 訪問迅睿CMS的官方文檔,找到如何開啟開發者模…

復現 MODEST 機器人抓取透明物體 單目 ICRA 2025

MODEST 單目透明物體抓取算法,來自ICRA 2025,本文分享它的復現過程。 輸入單個視角的RGB圖像,模型需要同時處理深度和分割任務,輸出透明物體的分割結果和場景深度預測。 論文地址:Monocular Depth Estimation and Se…

新手學習爬蟲的案例

首先你的電腦上肯定已經安裝了python,沒安裝的去官網安裝,我使用的是Pycharm作為操作的IDE 環境準備 安裝必要的庫 爬蟲需要用到requests和beautifulsoup4 使用命令行或者終端運行下面的命令 pip install requests beautifulsoup4 -i https://mirrors.aliyun.com/pypi/sim…

Octave3D 關卡設計插件

課程參考鏈接 這位大佬有在視頻合集中有詳細的講解,個人體驗過,感覺功能很強大 https://www.bilibili.com/video/BV1Kq4y1C72P/?share_sourcecopy_web&vd_source0a41d8122353e3e841ae0a39908c2181 Prefab資源管理 第一步 在場景中創建一個空物體…

【Transformer優化】Transformer的局限在哪?

自2017年Transformer橫空出世以來,它幾乎重寫了自然語言處理的規則。但當我們在享受其驚人的并行計算能力和表征能力時,是否真正理解了它的局限性?本文將深入探討在復雜度之外被忽視的五大核心缺陷,并試圖在數學維度揭示其本質。 …

SpringBoot(一)--搭建架構5種方法

目錄 一、?Idea從spring官網下載打開 2021版本idea 1.打開創建項目 2.修改pom.xml文件里的版本號 2017版本idea 二、從spring官網下載再用idea打開 三、Idea從阿里云的官網下載打開 ?編輯 四、Maven項目改造成springboot項目 五、從阿里云官網下載再用idea打開 Spri…

Python爬蟲實戰:一鍵采集電商數據,掌握市場動態!

電商數據分析是個香餑餑,可市面上的數據采集工具要不貴得嚇人,要不就是各種廣告彈窗。干脆自己動手寫個爬蟲,想抓啥抓啥,還能學點技術。今天咱聊聊怎么用Python寫個簡單的電商數據爬蟲。 打好基礎:搞定請求頭 別看爬蟲…

樂鑫打造全球首款 PSA Certified Level 2 RISC-V 芯片

樂鑫科技 (688018.SH) 榮幸宣布 ESP32-C6 于 2025 年 2 月 20 日獲得 PSA Certified Level 2 認證。這一重要突破使 ESP32-C6 成為全球首款基于 RISC-V 架構獲此認證的芯片,體現了樂鑫致力于為全球客戶提供安全可靠、性能卓越的物聯網解決方案的堅定承諾。 PSA 安全…

圖像滑塊對比功能的開發記錄

背景介紹 最近,公司需要開發一款在線圖像壓縮工具,其中的一個關鍵功能是讓用戶直觀地比較壓縮前后的圖像效果。因此,我們設計了一個對比組件,它允許用戶通過拖動滑塊,動態調整兩張圖像的顯示區域,從而清晰…

tcc編譯器教程2 編譯lua解釋器

本文主要介紹了使用tcc編譯器編譯lua解釋器源碼。 1 介紹 lua是一門編程語言,開源且源碼很容易編譯,我平時用來測試C語言編程環境時經常使用。一般能編譯成功就說明編程環境設置正常。下面用之前設置好的tcc編程環境進行測試。 2 獲取源碼 我一般有保留多個版本的lua源碼進…

Unity DOTS從入門到精通之 自定義Authoring類

文章目錄 前言安裝 DOTS 包什么是Authoring1. 實體組件2. Authoring類 前言 DOTS(面向數據的技術堆棧)是一套由 Unity 提供支持的技術,用于提供高性能游戲開發解決方案,特別適合需要處理大量數據的游戲,例如大型開放世…

comctl32!ListView_OnSetItem函數分析LISTSUBITEM結構中的image表示圖標位置

第一部分: BOOL ListView_SetSubItem(LV* plv, const LV_ITEM* plvi) { LISTSUBITEM lsi; BOOL fChanged FALSE; int i; int idpa; HDPA hdpa; if (plvi->mask & ~(LVIF_DI_SETITEM | LVIF_TEXT | LVIF_IMAGE | LVIF_STATE)) { …

【算法】大數據查重

大數據查重 哈希表 找出第一個出現重復的數字 || 找所有重復出現的數字 #include <iostream> #include <vector> #include <unordered_map> #include <unordered_set> #include <stdlib.h> #include <time.h> #include <string> …

模型微調-基于LLaMA-Factory進行微調的一個簡單案例

模型微調-基于LLaMA-Factory進行微調的一個簡單案例 1. 租用云計算資源2. 拉取 LLaMa-Factory3. 安裝依賴環境4. 啟動 LLaMa-Factory 界面5. 從 Huggingface 下載模型6. 模型驗證7. 模型微調 1. 租用云計算資源 以下示例基于 AutoDL 云計算資源。 在云計算平臺選擇可用的云計…

【單片機】ARM 處理器簡介

ARM 公司簡介 ARM&#xff08;Advanced RISC Machine&#xff09; 是英國 ARM 公司&#xff08;原 Acorn RISC Machine&#xff09; 開發的一種精簡指令集&#xff08;RISC&#xff09; 處理器架構。ARM 處理器因其低功耗、高性能、廣泛適用性&#xff0c;成為嵌入式系統、移動…

springboot的實體類字段校驗的分組校驗

分組校驗&#xff08;Group Validation&#xff09;允許在不同的場景下對同一個實體類應用不同的校驗規則。例如&#xff0c;在新增數據和更新數據時&#xff0c;可能需要對某些字段的校驗規則進行調整。以下是分組校驗的具體實現步驟&#xff1a; 一、定義分組接口 創建空的標…