《Go 語言第一課》課程學習筆記(二)

初窺門徑:一個 Go 程序的結構是怎樣的?

創建“hello,world”示例程序

  • 在 Go 語言中編寫一個可以打印出“hello,world”的示例程序,我們只需要簡單兩步,一是創建文件夾,二是開始編寫和運行。
  • 通常來說,Go 不會限制我們存儲代碼的位置,建議創建一個可以集合所有項目的根文件夾(比如:~/goprojects),然后將所有的項目都放在里面。
  • 對于 Linux 系統、macOS 系統,以及 Windows 系統的 PowerShell 終端來說,用下面這個命令就可以建立 hello world 文件夾了:mkdir ~/goprojects mkdir helloworld

編寫并運行第一個 Go 程序

  • 首先,我們需要創建一個名為 main.go 的源文件。
    • Go 源文件總是用全小寫字母形式的短小單詞命名,并且以 .go 擴展名結尾。
    • 如果要在源文件的名字中使用多個單詞,我們通常直接是將多個單詞連接起來作為源文件名,而不是使用其他分隔符,比如下劃線。
    • 我們盡量不要用兩個以上的單詞組合作為文件名,否則就很難分辨了。
  • 現在,你可以打開剛剛創建的 main.go 文件,鍵入下面這些代碼:
    package mainimport "fmt"func main()  {fmt.Println("hello, world")
    }
    

“hello,world”示例程序的結構

  • package main 這一行代碼定義了 Go 中的一個包 package。
    • 包是 Go 語言的基本組成單元,通常使用單個的小寫單詞命名,一個 Go 程序本質上就是一組包的集合。
    • 所有 Go 代碼都有自己隸屬的包,在這里我們的“hello,world”示例的所有代碼都在一個名為 main 的包中。
    • main 包在 Go 中是一個特殊的包,整個 Go 程序中僅允許存在一個名為 main 的包。
  • main 包中的主要代碼是一個名為 main 的函數:
    func main() {fmt.Println("hello, world")
    }
    
    • 當你運行一個可執行的 Go 程序的時候,所有的代碼都會從這個入口函數開始運行。
    • Go 語言內置了一套 Go 社區約定俗稱的代碼風格,并隨安裝包提供了一個名為 Gofmt 的工具,這個工具可以幫助你將代碼自動格式化為約定的風格。
    • 因此,作為 Go 開發人員,請在提交你的代碼前使用 Gofmt 格式化你的 Go 源碼。
  • main 函數體中之所以可以調用 fmt 包的 Println 函數,還有最后一個原因,那就是
    Println 函數名的首字母是大寫的。在 Go 語言中,只有首字母為大寫的標識符才是導出的(Exported),才能對包外的代碼可見;如果首字母是小寫的,那么就說明這個標識符僅限于在聲明它的包內可見。

Go 語言中程序是怎么編譯的?

  • Go 是一種編譯型語言,這意味著只有你編譯完 Go 程序之后,才可以將生成的可執行文件交付于其他人,并運行在沒有安裝 Go 的環境中。
  • Go module 構建模式是在 Go 1.11 版本正式引入的,為的是徹底解決 Go 項目復雜版本依賴的問題,在 Go 1.16 版本中,Go module 已經成為了 Go 默認的包依賴管理機制和 Go 源碼構建機制。
  • Go Module 的核心是一個名為 go.mod 的文件,在這個文件中存儲了這個 module 對第三方依賴的全部信息。
  • 其實,一個 module 就是一個包的集合,這些包和 module 一起打版本、發布和分發。go.mod 所在的目錄被我們稱為它聲明的 module 的根目錄。除了按提示手動添加外,我們也可以使用 go mod tidy 命令,讓 Go 工具自動添加相關包依賴。

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

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

相關文章

高光譜 | 礦物識別和分類標簽數據制作、農作物病蟲害數據分類、土壤有機質含量回歸與制圖、木材含水量評估和制圖

本課程提供一套基于Python編程工具的高光譜數據處理方法和應用案例。 本課程涵蓋高光譜遙感的基礎、方法和實踐。基礎篇以學員為中心,用通俗易懂的語言解釋高光譜的基本概念和理論,旨在幫助學員深入理解科學原理。方法篇結合Python編程工具,…

阿里云服務器部署RabbitMQ流程

阿里云百科分享使用阿里云服務器部署RabbitMQ流程,RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件,用于在分布式系統中存儲轉發消息,有良好的易用性、擴展性和高可用性。本文介紹如何通過ECS實例部署Rabbi…

CentOS系統環境搭建(四)——Centos7安裝Java

centos系統環境搭建專欄🔗點擊跳轉 Centos7安裝Java 查看云端yum庫中目前支持安裝的jdk軟件包 yum search java|grep jdk選擇JDK版本,并安裝 yum install -y java-1.8.0-openjdk檢查是否安裝成功 java -version查看JDK的安裝目錄 find / -name jav…

【Java面試】redis雪崩、穿透和擊穿詳解

一 Redis雪崩、穿透和擊穿 1. Redis雪崩: Redis雪崩是指在某一時刻,緩存中大量的緩存數據同時失效或過期,導致大量的請求直接打到后端數據庫,導致數據庫負載劇增,引發性能問題甚至崩潰。這通常是因為緩存數據的過期時…

機器學習筆記:李宏毅 stable diffusion

1 基本框架 ①:文字變成向量 ②:喂入噪聲文字encoder,產生中間產物 ③:decoder 還原圖片 2 text encoder 這張圖越往右下表示效果越好,可以看到text encoder尺寸越大,對后續生成圖片的增益越多 3 評價圖…

公園游玩必備!新零售模式如何吸引更多游客

隨著科技的不斷演進,新零售模式正以前所未有的速度改變著我們的購物方式和消費體驗。其中,自動售貨機作為新零售模式的重要組成部分,以其智能化、便捷性和多樣性的特點,正逐漸成為城市中熠熠生輝的一道風景線。 從24小時不間斷的運…

LeetCode Top100 Liked 題單(序號34~51)

?34. Find First and Last Position of Element in Sorted Array ? 題意:找到非遞減序列中目標的開頭和結尾 我的思路 用二分法把每一個數字都找到,最后返回首尾兩個數 代碼 Runtime12 ms Beats 33.23% Memory14 MB Beats 5.16% class Solution {…

前端練手小項目--自定義時間(html+css+js)

自定義時間 寫文章的因 關于要寫這篇文章的原因 是記錄在工作上遇到的困難需求,是希望能給大家提供一些解決問題的思路 接下來我描述這個需求的多樣性,難點在哪。 勾選勾選框開始時間與結束時間默認顯示昨天與今天。取消勾選框開始時間與結束時間清空。…

如何查看線程在哪個cpu核上

1、ps -eLF查看PSR值 2、 taskset -pc $pid(進程/線程) 參考鏈接:https://blog.csdn.net/test1280/article/details/87993669

Ubuntu修改設置系列--修改ssh端口號的方法(有示例)

原文網址:Ubuntu修改設置系列--修改ssh端口號的方法(有示例)_IT利刃出鞘的博客-CSDN博客 簡介 說明 本文介紹Ubuntu修改ssh端口號的方法(有示例)。 要達成的目標 ssh添加一個端口:3333,關閉原來的22端口。 1.修改端口 修改配置文件/et…

thingsboard編譯安裝踩坑記錄

thingsboard編譯安裝踩坑記錄 一、編譯:二、運行 朋友的thingsboard沒人維護,要裝新的服務器,啥文檔也沒有,就讓參考官網的文檔,版本也比較老3.2.2的,拿過來試了試記錄下踩坑的地方。 一、編譯:…

get與post如何拼接url與數據的靈活處理,循環的重要性。

get與post拼接url地址不同: let postData {method: "post",data: {op: "/api/setting/maintenanceperiod?period"this.authorizationCode,loadingConfig: {},data: {period:this.authorizationCode}}}; if(this.editData.id){let postData …

Nginx運行Vue項目:基本運行

需求 在Nginx服務器中,運行Vue項目。 說明 Vue項目打包生成的生產文件,是無法直接在瀏覽器打開的。需要放到Nginx服務器中,才能夠訪問。 本文章只介紹最基本的情況:Nginx中運行一個Vue項目。 實際生產環境,一個Ng…

mysql 批量給數據表和字段添加注釋

1、用命令行導出 mysql數據庫中的所有表 首先查看 mysql 的配置文件 “/etc/my.cnf ”,配置中找到 datadir 目錄, 將文件導出到 datadir 目錄下 我的 datadir 目錄是: /var/lib/mysql 連接mysql,執行導出命令 SELECT TABLE_NAM…

解密 AI 客服;在不同硬件設備上運行大型語言模型的可能性

🦉 AI新聞 🚀 微軟必應首席執行官稱必應聊天優于OpenAI的GPT-4,但成本更高 摘要:微軟必應的首席執行官米哈伊爾?帕拉欣表示,必應聊天表現優于OpenAI的GPT-4,但使用了更高成本的檢索增強推理技術。必應聊…

中科億海微ROM使用

標題 ROM(Read-Only Memory,只讀存儲器)是一種在FPGA(Field-Programmable Gate Array,現場可編程門陣列)中常用的存儲器類型。與RAM(Random Access Memory,機存取存儲器)…

Nginx安全加固,版本隱藏及HTTP請求頭修改方法

1 隱藏nginx版本號 1.1 引言 nginx作為目前較為流行的http server軟件,其相關的安全漏洞也非常多,攻擊者可以根據我們的nginx版本來了解到相關的漏洞從而針對性的進行攻擊。 通過新版本的nginx都會修復一些老版本的已知漏洞,但有時候我們生…

二刷LeetCode--148. 排序鏈表(C++版本),必會題,思維題

思路,本題其實考察了兩個點:合并鏈表、鏈表切分。首先從1開始,將鏈表切成一段一段,因為需要使用歸并,所以下一次的切分長度應該是當前切分長度的二倍,每次切分,我們拿出兩段,然后將第…

虛擬機與Java虛擬機介紹

1、虛擬機 所謂虛擬機(Virtual Machine),就是一臺虛擬的計算機。它是一款軟件,用來執行一系列虛擬計算機指令。大體上,虛擬機可以分為系統虛擬機和程序虛擬機。大名鼎鼎的Visual Box,VMware就屬于 系統虛…

提示丟失vcomp140.dll怎么辦?如何快速修復vcomp140.dll丟失問題

最近我遇到了一個程序啟動失敗的問題,錯誤提示顯示缺少了vcomp140.dll文件。經過一番研究和嘗試,我終于成功修復了這個問題。在這里,我將分享一下我的修復方法。 目錄 vcomp140.dll是什么? 如何快速修復呢? vcomp140…