Go基礎語法與控制結構

Go基礎語法與控制結構

1. 環境配置與Hello World(擴展)

安裝指南

# 驗證安裝成功
$ go version
# 設置模塊代理(中國用戶推薦)
$ go env -w GOPROXY=https://goproxy.cn,direct

程序解剖

package main  // 程序入口包聲明import "fmt"  // 格式化IO包// main函數是程序唯一入口
func main() {// Println自動換行且支持Unicodefmt.Printf("當前Go版本: %s\n", runtime.Version()) 
}

2. 變量與數據類型(增強)

類型系統全景圖

數據類型
基本類型
復合類型
整型 int/int8/uint等
浮點型 float32/float64
布爾型 bool
字符型 rune/byte
數組
結構體
函數

零值機制

var (a int     // 0b float64 // 0.0c string  // ""d bool    // false
)

類型別名

type Celsius float64  // 溫度類型
var temp Celsius = 36.6

3. 流程控制(增強)

條件語句進階

// 帶作用域的變量聲明
if file, err := os.Open("test.txt"); err != nil {fmt.Println("打開文件失敗:", err)
} else {defer file.Close()// 處理文件內容
}

Switch黑科技

// 類型判斷switch
var val interface{} = 3.14
switch val.(type) {
case int:fmt.Println("整數類型")
case float64:fmt.Println("雙精度浮點")
default:fmt.Println("未知類型")
}// 表達式缺失的switch
score := 85
switch {
case score >= 90:fmt.Println("A")
case score >= 80:fmt.Println("B")
case score >= 70:fmt.Println("C")
}

循環控制全景

// 死循環寫法
for {// 需要內部break退出
}// range迭代(后續章節詳解)
words := []string{"Go", "Java", "Python"}
for index, word := range words {fmt.Printf("%d:%s ", index, word)
}
// 輸出:0:Go 1:Java 2:Python

4. 函數定義(增強)

函數特性矩陣

特性示例說明
可變參數func sum(nums …int)類似Python的*args
匿名函數func() { // }()立即執行函數
閉包計數器工廠函數捕獲外部變量
延遲執行defer資源清理FILO順序執行

閉包示例

func counter() func() int {count := 0return func() int {count++return count}
}c := counter()
fmt.Println(c(), c(), c()) // 1 2 3

錯誤處理規范

func loadConfig(path string) (*Config, error) {file, err := os.Open(path)if err != nil {return nil, fmt.Errorf("配置加載失敗: %w", err)}defer file.Close()// 解析配置...return &config, nil
}

5. 實戰演練:溫度轉換程序

package mainimport "fmt"type Celsius float64
type Fahrenheit float64func CToF(c Celsius) Fahrenheit {return Fahrenheit(c*9/5 + 32)
}func FToC(f Fahrenheit) Celsius {return Celsius((f - 32) * 5 / 9)
}func main() {var c Celsius = 100fmt.Printf("%v°C = %v°F\n", c, CToF(c))f := Fahrenheit(212)fmt.Printf("%v°F = %v°C\n", f, FToC(f))
}
graph TDA[開始] --> B[輸入溫度值]B --> C{選擇轉換方向}C -->|C→F| D[調用CToF函數]C -->|F→C| E[調用FToC函數]D --> F[輸出結果]E --> FF --> G[結束]

Go復合類型與內存管理

1. 數組與切片(增強)

底層關系圖解

切片操作
數組
切片
長度len
容量cap
底層數組指針

切片擴容機制

s := []int{1,2,3}
fmt.Printf("原始容量: %d\n", cap(s)) // 3s = append(s, 4)
fmt.Printf("擴容后容量: %d\n", cap(s)) // 6(Go 1.18+策略)

2. 映射與結構體(增強)

嵌套結構體

type Address struct {City    stringZipCode int
}type User struct {Name    stringAge     intAddress // 匿名嵌入
}func main() {u := User{Name: "張三",Age:  25,Address: Address{City:    "北京",ZipCode: 100000,},}fmt.Println(u.City) // 直接訪問匿名字段
}

3. 接口與反射(新增章節)

接口實現原理

接口變量
類型指針
數據指針
具體類型信息
實際數據值

類型斷言示例

var val interface{} = "hello"if s, ok := val.(string); ok {fmt.Println(s)
} else {fmt.Println("不是字符串類型")
}

?實戰項目建議?:嘗試開發一個簡單的學生管理系統,要求:

  • 使用結構體存儲學生信息(姓名、學號、成績)
  • 使用切片實現數據存儲
  • 實現增刪改查功能
  • 支持數據持久化存儲

建議配合官方文檔 https://golang.org/doc 進行深入學習。

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

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

相關文章

QGIS新手教程:兩種方法創建點圖層(手動添加 + 表格導入),支持經緯度定位與查找

🌍QGIS新手教程:兩種方法創建點圖層(手動添加 表格導入),支持經緯度定位與查找 本文將手把手教你在 QGIS 中通過兩種方法創建點圖層,并結合經緯度定位、拾取坐標、查找屬性等功能,快速掌握從地…

Doris ClickHouse Greenplum 對比

1. 核心架構對比 Doris (https://doris.apache.org/) MPP架構 列式存儲支持實時更新(Unique Key模型)向量化執行引擎兼容MySQL協議 ClickHouse (https://clickhouse.com/) 分布式列式存儲MergeTree存儲引…

基于python,html,echart,php,mysql,在線實時監控入侵檢測系統

詳細視頻:【基于python,html,echart,php,mysql,在線實時監控入侵檢測系統,需要的可聯系介紹都在所有圖片中。包遠程部署安裝。-嗶哩嗶哩】 https://b23.tv/KHxmE8k

基于51單片機智能垃圾桶—紅外感應自動開關

基于51單片機智能垃圾桶 (仿真+程序+原理圖+PCB+設計報告) 功能介紹 具體功能: 1.ULN2003驅動步進電機控制打開關閉垃圾桶; 2.一個紅外對管檢測有沒有人,一個紅外對管…

自動涂膠機設計及其在工業生產中的應用研究

摘要 本文詳細探討了自動涂膠機的設計原理、關鍵技術和應用前景。隨著工業自動化水平的不斷提高,自動涂膠機在制造業中的應用日益廣泛。文章首先分析了自動涂膠機的基本工作原理,然后深入研究了其機械結構設計、控制系統設計和視覺定位系統等關鍵技術。…

SQL 語言

SQL概述與數據庫定義 SQL的基本組成 1、數據定義語言。SQL DDL提供定義關系模式和視圖、刪除關系和視圖、修改關系模式的命令。 2、交互式數據操縱語言。SQL DML提供查詢、插入、刪除和修改的命令。 3、事務控制。SQL提供定義事務開始和結束的命令。 4、嵌入式SQL和動態SQL。用…

深度剖析ZooKeeper

1. ZooKeeper架構總覽 ZooKeeper 是一個分布式協調服務,廣泛用于分布式系統中的配置管理、命名服務、分布式鎖和領導選舉等場景。以下是對 ZooKeeper 架構、通信機制、容錯處理、數據一致性與可靠性等方面的詳細剖析。 一、ZooKeeper 主從集群 ZooKeeper 采用 主從…

K8S-statefulset-mysql-ha

需求 實現一個HA mysql,包括1個master,2個slave。在K8S上已statefulset部署。 mysql HA原理 略 K8S環境需要解決的問題 1、由于使用同一個statefulset配置,因此需要考慮master和slave使用不同的cnf文件。 2、不同pod之間文件的傳輸 3、…

人臉美顏磨皮祛痘1:數據集說明(含下載鏈接)

一. 前言 本篇博客是《人臉美顏磨皮祛痘》系列文章之《數據集說明(含下載鏈接)》,像這種深度學習圖像修復的數據一般是需要成對,網上很難找到,公司或者個人都是花錢找人做。為了方便你我他,本博客將分享一個由我自己整理的人臉美…

redis功能清單

文章目錄 Redis高級功能使用說明功能清單1. 分布式鎖1.1 功能描述1.2 使用方法1.3 測試接口 2. 消息發布訂閱2.1 功能描述2.2 使用方法發布消息訂閱消息 2.3 測試接口 3. 接口限流3.1 功能描述3.2 使用方法方式一:直接使用工具類方式二:使用注解&#xf…

從代碼學習深度學習 - 預訓練word2vec PyTorch版

文章目錄 前言輔助工具1. 繪圖工具 (`utils_for_huitu.py`)2. 數據處理工具 (`utils_for_data.py`)3. 訓練輔助工具 (`utils_for_train.py`)預訓練 Word2Vec - 主流程1. 環境設置與數據加載2. 跳元模型 (Skip-gram Model)2.1. 嵌入層 (Embedding Layer)2.2. 定義前向傳播3. 訓練…

Python實現對大批量Word文檔進行自動添加頁碼(16)

前言 本文是該專欄的第16篇,后面會持續分享Python辦公自動化干貨知識,記得關注。 在處理word文檔的時候,相信或多或少都遇到過這樣的需求——需要對“目標word文檔,自動添加頁碼”。 換言之,如果有大批量的word文檔文件需要你添加頁碼,這個時候最聰明的辦法就是使用“程…

云原生安全:Linux命令行操作全解析

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 ——從基礎概念到安全實踐的完整指南 一、基礎概念 1. Shell與終端交互 Shell是Linux命令行的解釋器(如Bash、Zsh),負…

Day 34

GPU訓練 要讓模型在 GPU 上訓練,主要是將模型和數據遷移到 GPU 設備上。 在 PyTorch 里,.to(device) 方法的作用是把張量或者模型轉移到指定的計算設備(像 CPU 或者 GPU)上。 對于張量(Tensor)&#xff1…

C++筆試題(金山科技新未來訓練營):

題目分布: 17道單選(每題3分)3道多選題(全對3分,部分對1分)2道編程題(每一道20分)。 不過題目太多,就記得一部分了: 單選題: static變量的初始…

Spark(29)基礎自定義分區器

(一)什么是分區 【復習提問:RDD的定義是什么?】 在 Spark 里,彈性分布式數據集(RDD)是核心的數據抽象,它是不可變的、可分區的、里面的元素并行計算的集合。 在 Spark 中&#xf…

python打卡訓練營打卡記錄day35

知識點回顧: 三種不同的模型可視化方法:推薦torchinfo打印summary權重分布可視化進度條功能:手動和自動寫法,讓打印結果更加美觀推理的寫法:評估模式 作業:調整模型定義時的超參數,對比下效果 1…

【MySQL】07.表內容的操作

1. insert 我們先創建一個表結構,這部分操作我們使用這張表完成我們的操作: mysql> create table student(-> id int primary key auto_increment,-> name varchar(20) not null,-> qq varchar(20) unique-> ); Query OK, 0 rows affec…

使用SQLite Expert個人版VACUUM功能修復數據庫

使用SQLite Expert個人版VACUUM功能修復數據庫 一、SQLite Expert工具簡介 SQLite Expert 是一款功能強大的SQLite數據庫管理工具,分為免費的個人版(Personal Edition)和收費的專業版(Professional Edition)。其核心功…

LM-BFF——語言模型微調新范式

gpt3(GPT3——少樣本示例推動下的通用語言模型雛形)結合提示詞和少樣本示例后,展示出了強大性能。但大語言模型的訓練門檻太高,普通研究人員無力,LM-BFF(Making Pre-trained Language Models Better Few-shot Learners)的作者受gp…