【go語言 | 第1篇】Go環境安裝+go語言特性

文章目錄

  • go開發環境
    • 1. 下載安裝包
    • 2. 配置環境變量
    • 3. GOPROXY
  • go語言特性
    • 1. go的優勢
    • 2. go適合做什么
    • 3. go缺點
  • 編寫一個go程序
    • 注:在VSCode中補全go代碼

go開發環境

我這里是windows操作系統的環境安裝,其他系統可以查看菜鳥教程:Go 語言環境安裝

1. 下載安裝包

安裝包下載地址為:https://go.dev/dl/
在這里插入圖片描述
雙擊.msi文件安裝環境:
在這里插入圖片描述
命令行輸入go version出現下面版本,說明環境安裝成功
在這里插入圖片描述

2. 配置環境變量

  • GOROOT:go環境所在的目錄。
  • GOPATH:go項目代碼存放的位置。就是其他IDE的workspace。

在環境的系統變量中配置GOROOT和GOPATH,并且確保用戶變量中的GOPATH路徑與系統變量中的相同:
在這里插入圖片描述
在系統變量的Path中也要加入go下的bin目錄路徑(一般會自動添加):
在這里插入圖片描述
命令行輸入go env查看是否配置成功:
在這里插入圖片描述
在這里插入圖片描述

3. GOPROXY

Go1.14版本之后,推薦使用go mod模式來管理依賴了,也不再強制我們把代碼必須寫在GOPATH下面的src目錄了,你可以在你電腦的任意位置編寫go代碼。
默認GoPROXY配置是:GOPROXY=https://proxy.golang.org,direct,
由于國內訪問不到 https://proxy.golang.org 所以我們需要換一個PROXY,這里推薦使用https://goproxy.io 或 https://goproxy.cn。
可以執行下面的命令修改GOPROXY:

#開啟mod模式(項目管理需要用到)
go env -w GO111MODULE=on
#重新設置成七牛鏡像源(推薦)
go env -w GOPROXY=https://goproxy.cn,direct
#查看環境變量
go env

在這里插入圖片描述

IDE:選擇使用 VSCode/Goland

go語言特性

1. go的優勢

  • 部署簡單:直接編譯成機器碼、不依賴其他庫、直接運行即可部署
  • 靜態語言類型:編譯的時候檢查出來隱藏的大多數問題

動態語言:沒有編譯器,只能在執行過程中逐條判斷對錯(Shell腳本,python,JavaScript)

  • 語言層面的并發:天生的基因支持,充分利用多核
  • 強大的標準庫:runtime系統調度機制、高效的GC垃圾回收、豐富的標準庫

runtime:go語言調度的平均分配
GC垃圾回收:go1.8之后,GC加入了三色標記和混合寫屏障,效率高
標準庫:文本、輸入輸出、同步機制、數字、日期和時間…

  • 簡單易學:25個關鍵字、內嵌C語法支持、面向對象特征(封裝、繼承、多態)、跨平臺

2. go適合做什么

  • 云計算基礎設施:DockerKubernetes、七牛云存儲等。
  • 基礎后端軟件
  • 微服務:go-kit

3. go缺點

  • 包管理,大部分包在github上
  • 所有Exception都用Error來處理

C語言全部使用Error來處理,C語言沒有異常。
Java具有Exception

編寫一個go程序

在 GOPATH 下新創建一個文件夾,在 VSCode 中編寫一個 hello.go 程序:

package main// 程序使用到的包(函數)
import "fmt"func main() {fmt.Println("Hello go!")
}

在控制臺執行:
在這里插入圖片描述

  • 每個 go 程序由包構成,程序從main包開始。
  • 用 import 導入使用到的包,導入多個包:
import ("fmt""time"
)//也可以
import "fmt"
import "time"
  • golang 中的語句,可以加“;”也可以不加,通常不加
  • go語言的語法,定義函數的時候,‘{’ 必須和函數名在同一行,不能另起一行,否則會編譯錯誤。

注:在VSCode中補全go代碼

在終端下載go相關插件:

go env -w GOPROXY=https://goproxy.cn,direct
go env GOPROXY
go clean -modcache
go install golang.org/x/tools/gopls@latest
go install github.com/cweill/gotests/gotests@latest
go install github.com/fatih/gomodifytags@latest
go install github.com/josharian/impl@latest
go install github.com/haya14busa/goplay/cmd/goplay@latest
go install github.com/go-delve/delve/cmd/dlv@latest
go install honnef.co/go/tools/cmd/staticcheck@latest

執行后,在 GOPATH 的 bin 目錄下,有插件生成:
在這里插入圖片描述
重啟 VSCode,即可自動補全代碼以及代碼提示。

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

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

相關文章

【Pywinauto庫】0. Pywinauto Windows GUI 自動化指南

概述 Pywinauto 是一個用于自動化 Windows GUI 應用程序的 Python 庫,適用于自動化測試、數據錄入和其他重復性桌面操作。 快速參考表方面方法/屬性示例說明安裝pip install pywinauto安裝庫后端選擇Application(backend"uia") 或 Application(backend&qu…

CStringArray 和 CStringList

CStringArray 和 CStringList 都是 MFC 中用于管理字符串集合的類,但它們的內部數據結構和適用場景有顯著差異,選擇時需根據具體操作需求決定。以下從核心區別、功能對比和適用場景三個方面詳細說明:一、核心區別:數據結構決定特性…

2025版基于springboot的企業考勤管理系統

博主介紹:java高級開發,從事互聯網行業六年,熟悉各種主流語言,精通java、python、php、爬蟲、web開發,已經做了多年的設計程序開發,開發過上千套設計程序,沒有什么華麗的語言,只有實…

設計模式(C++)詳解—單例模式(1)

<摘要> 單例模式是創建型設計模式中最經典且應用最廣泛的設計模式之一&#xff0c;它確保一個類只有一個實例并提供全局訪問點。本文從歷史背景和核心概念出發&#xff0c;詳細闡述了單例模式的產生背景和演進歷程&#xff0c;深入剖析了其在資源管理、狀態一致性和訪問控…

將GitHub遠程倉庫修改為ssh

8 將GitHub遠程倉庫修改為ssh 文章目錄8 將GitHub遠程倉庫修改為ssh1 創建本地的ssh密鑰2 設置GitHub密鑰3 將本地庫鏈接到遠程倉庫很多時候在使用GitHub的遠程鏈接使用的是http的格式&#xff0c;但是這個格式并不好&#xff0c;尤其是在代碼上傳的時候&#xff0c;因此需要采…

【OEC-Turbo】網心云 OEC-Turbo 刷機 Armbian 系統教程

前言 大量網心云 OEC 及 OEC-Turbo 設備流入二手市場&#xff08;如海鮮市場&#xff09;&#xff0c;價格低至 70-100 元。相比同配置的拾光塢 N3&#xff08;約 380 元&#xff09;&#xff0c;OEC-Turbo 僅需一個零頭&#xff0c;性價比極高。這些“礦渣”設備外觀與玩客云…

25.線程概念和控制(二)

一、線程周邊問題1.線程的優點創建一個新線程的代價要比創建一個新進程小得多。線程占用的資源要比進程少很多。能充分利用多處理器的可并行數量。在等待慢速I/O操作結束的同時&#xff0c;程序可執行其他的計算任務。計算密集型應用&#xff0c;為了能在多處理器系統上運行&am…

【CVPR2023】奔跑而非行走:追求更高FLOPS以實現更快神經網絡

文章目錄一、論文信息二、論文概要三、實驗動機四、創新之處五、實驗分析六、核心代碼注釋版本七、實驗總結一、論文信息 論文題目&#xff1a;Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks中文題目&#xff1a;奔跑而非行走&#xff1a;追求更高FLOPS…

JVM(二)--- 類加載子系統

目錄 前言 一、類加載過程 1. loading階段 2. Linking階段 2.1 驗證 2.2 準備 2.3 解析 3. Initialization階段 二、類加載器 1. 類加載器的分類 2. 用戶自定義類加載器 三、雙親委派機制 四、其他知識點 前言 JVM的內存結構如圖所示&#xff1a; 一、類加載過程…

Docker 容器的使用

1.容器的基本信息[roothost1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9ac8245b5b08 img-layers-test "python /app/app.py" 45 hours ago Exited (0) 45 hour…

LLMs之Hallucinate:《Why Language Models Hallucinate》的翻譯與解讀

LLMs之Hallucinate&#xff1a;《Why Language Models Hallucinate》的翻譯與解讀 導讀&#xff1a;該論文深入分析了語言模型中幻覺現象的成因&#xff0c;認為幻覺源于預訓練階段的統計壓力和后訓練階段評估體系對猜測行為的獎勵。論文提出了通過修改評估方法&#xff0c;使其…

Spring Cloud @RefreshScope 作用是什么?

RefreshScope 是 Spring Cloud 中的一個重要注解&#xff0c;主要作用如下&#xff1a; 主要功能動態刷新配置 使 Bean 能夠在運行時動態刷新配置屬性當配置中心的配置發生變化時&#xff0c;無需重啟應用即可生效作用域管理 為 Bean 創建一個特殊的作用域 refresh標記的 Bean …

Flutter SDK 安裝與國內鏡像配置全流程(Windows / macOS / Linux)

這是一份面向國內網絡環境的 Flutter 從零到可運行指引&#xff1a;覆蓋 SDK 安裝、平臺依賴準備、國內鏡像配置&#xff08;PUB_HOSTED_URL、FLUTTER_STORAGE_BASE_URL&#xff09;、Android 側 Gradle 倉庫加速&#xff0c;以及 Java/Gradle 版本兼容的關鍵坑位與排查思路。文…

【Java】NIO 簡單介紹

簡介 從 Java 1.4 版本開始引入的一個新的 I/O API&#xff0c;可以替代標準的 Java I/O。提供了與標準 I/O 不同的工作方式&#xff0c;核心是 通道&#xff08;Channel&#xff09;、緩沖區&#xff08;Buffer&#xff09; 和 選擇器&#xff08;Selector&#xff09;。支持非…

Java爬蟲獲取京東item_get_app數據的實戰指南

一、引言京東開放平臺提供了豐富的API接口&#xff0c;其中item_get_app接口可用于獲取商品的詳細信息。這些數據對于市場分析、價格監控、商品推薦等場景具有重要價值。本文將詳細介紹如何使用Java編寫爬蟲&#xff0c;通過調用京東開放平臺的item_get_app接口獲取商品詳情數據…

Vue3源碼reactivity響應式篇之批量更新

概述 在vue3響應式系統設計中&#xff0c;批量更新是優化性能的核心機制之一。當短時間內頻繁多次修改響應式數據時&#xff0c;批量更新可以避免頻繁觸發訂閱者的更新操作&#xff0c;將這些更新操作合并為一次&#xff0c;從而減少不必要的計算和DOM操作。 批量更新也是利用鏈…

AI 模型訓練過程中參數用BF16轉向FP16的原因

大模型訓練從 FP16 轉向 BF16 是一個關鍵的技術演進&#xff0c;其核心原因在于 BF16 在動態范圍和精度之間取得了更優的平衡&#xff0c;從而極大地提升了訓練&#xff08;尤其是大模型訓練&#xff09;的穩定性和有效性。 1. 背景 為什么需要半精度浮點數 (FP16)&#xff1f;…

python網絡爬取個人學習指南-(五)

**************************************************************************************************************author&#xff1a;keyinfodate&#xff1a;2025-09-09 23:50title&#xff1a;網絡信息爬取之多聯級標題內容點擊****************************************…

RAG - 檢索增強生成

第一部分&#xff1a;RAG 詳解一、RAG 是什么&#xff1f;RAG&#xff08;Retrieval-Augmented Generation&#xff0c;檢索增強生成&#xff09;是一種將信息檢索&#xff08;或知識檢索&#xff09;與大語言模型&#xff08;LLM&#xff09;的生成能力相結合的技術框架。它的…

大數據畢業設計選題推薦-基于大數據的分化型甲狀腺癌復發數據可視化分析系統-Spark-Hadoop-Bigdata

?作者主頁&#xff1a;IT研究室? 個人簡介&#xff1a;曾從事計算機專業培訓教學&#xff0c;擅長Java、Python、微信小程序、Golang、安卓Android等項目實戰。接項目定制開發、代碼講解、答辯教學、文檔編寫、降重等。 ?文末獲取源碼? 精彩專欄推薦??? Java項目 Python…