go基礎學習筆記

思維導圖

在這里插入圖片描述

變量

聲明形式為var 變量名 變量類型
賦值形式為變量名=變量值
聲明和賦值同時形式為變量名:=變量值
多個變量同時聲明使用形式為

var (x intb bool
)

當有多個變量類型一樣時,可以放在一行,形式為var x,y int,當類型一樣,并且需要賦值同一行形式為a, b :=10, 20
特殊變量名_(下劃線),當賦值給下劃線時,會被丟棄_, b:=10,20

類型

int在32位硬件上是32位的,在64位硬件上是64位的
數字類型的有

  • int8, int16,int32,int64, rune(int32的別名)
  • byte, uint8, uint16, uint32, uint64
  • float32, float64

字符串在go中是不可修改的,如果需要修改,需要如下操作

var s string = "hello"
c := []rune(s)
c[0] = 'c'
s2 := string(c)

多行字符串支持形式有

  • 使用+換行,這個不包含換行符
  • 使用反引用``,包含換行符
s := "Starting part" +"Ending part"
s1 := `Starting partEnding part`

復數類型有complex126, complex64
錯誤類型為error

常量

其支持的類型有數字、布爾和字符串。多個常量同時聲明使用形式與變量類似。在使用枚舉時,可以使用iota,首次使用表示0,再次使用則+1,如

const (a = iotab
)

運算符

算術運算符有:*,/, %,<<, >>
位運算符有:&,&^, |, ^
關系運算符有:==, !=, <,<=, >, >=
邏輯運算符有:&&, ||, !
通道運算符:<-

控制結構

支持條件和循環
條件形式為if或者switch

if 條件 {} else {}
或者
switch {
case 條件
}

在switch不帶表達式時,即為true,執行內部的case條件語句
在帶有表達式時,會判斷條件的真假,進入對應的case分支,匹配失敗時不會向c語言樣自動向下嘗試,如果想要像c語言那樣,則添加fallthrough
循環形式有

for init; condition; post {}
或者
for condition {}
或者
for {}

range可以用于循環,尤其是在數據類型為slice, array, string, map和channel

list := []string{"a", "b", "c", "d", "e", "f"}
for k, v := range list {fmt.Println(k, v)
}

array,slice和map

數組聲明形式為var a [n]type,其中n表示數組元素個數,type表示數組元素類型。在聯合聲明時a:=[...]int{},n可以使用省略號,由go自動計算數組元素個數。數組是值類型
slice是引用類型,為指向array的指針

函數

形式為

func (p myType) funcname(q int)(r, s int) {
}

當沒有返回值時,(r,s int)可以省略
當返回值只有一個時,可以只寫類型
defer語句在函數退出時執行,比如資源回收
變參函數形式為

func funcname(arg ...int)

在函數體內,變參類型為slice,對于沒有指定類型的變參,類型默認為interface

包中大寫字母開頭的是public的,小寫字母開頭的是private的
推薦使用go module來管理包

測試包

測試包為testing。在使用go test時,會遍歷以_test.go結尾的go文件,同時執行以Test開頭的測試函數

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

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

相關文章

C++析構函數和線程退出1

線程作為程序在操作系統中的執行單元&#xff0c;它是活動對象&#xff0c;有生命周期狀態&#xff0c;它是有始有終的。有啟動就有結束&#xff0c;在上篇文章中討論了線程作為數據成員啟動時的順序問題&#xff0c;如何避免構造函數在初始化對象時對線程啟動的負面影響&#…

【語法】JSON格式與基礎語法

文章目錄JSON 簡介JSON 語法規則JSON 名稱/值對JSON 值類型JSON文件存儲JSON示例數據示例Python解析JSON代碼JSON 簡介 JSON 語法是 JavaScript 語法的子集。JSON 是存儲和交換文本信息的語法。JSON: JavaScript Object Notation(JavaScript 對象表示法)。 JSON 語法規則 數…

GitHub 熱榜項目 - 日榜(2025-08-16)

GitHub 熱榜項目 - 日榜(2025-08-16) 生成于&#xff1a;2025-08-16 統計摘要 共發現熱門項目&#xff1a;13 個 榜單類型&#xff1a;日榜 本期熱點趨勢總結 本期GitHub熱榜呈現三大技術熱點&#xff1a;1) AI應用深入垂直領域&#xff0c;SpatialLM將大語言模型應用于空間…

什么是EDA(Exploratory Data Analysis,探索性數據分析)

EDA&#xff08;Exploratory Data Analysis&#xff0c;探索性數據分析&#xff09;是一種在正式建模前&#xff0c;通過統計量和可視化方法來理解數據特征、發現模式與異常、并提出假設的過程。 這張圖里你會看到&#xff1a; 直方圖&#xff1a;展示單變量的分布&#xff0c;…

計算機畢業設計java的小天鵝酒店月子會所管理小天鵝酒店母嬰護理中心管理系統設計小天鵝酒店產后護理會所信息化管理平臺

計算機畢業設計java的小天鵝酒店月子會所管理9zl079&#xff08;配套有源碼 程序 mysql數據庫 論文&#xff09; 本套源碼可以在文本聯xi,先看具體系統功能演示視頻領取&#xff0c;可分享源碼參考。在當今數字化時代&#xff0c;隨著人們對產后護理需求的不斷增加&#xff0c;…

Docker-14.項目部署-DockerCompose

一.DockerCompose大家可以看到&#xff0c;我們部署一個簡單的java項目&#xff0c;其中包含3個容器&#xff1a;MySQLNginxJava項目而稍微復雜的項目&#xff0c;其中還會有各種各樣的其它中間件&#xff0c;需要部署的東西遠不止3個。如果還像之前那樣手動的逐一部署&#xf…

Vue組件基礎解析

一、組件的核心意義 組件是Vue中實現UI復用與邏輯封裝的基礎單元,能將復雜UI拆分為獨立、可重用的部分,最終組織成嵌套的樹狀結構(類似HTML元素嵌套)。Vue組件模型支持自定義內容與邏輯封裝,也能兼容原生Web Component。 二、組件的定義方式 根據是否使用構建步驟,Vue…

第5問 對于數據分析領域,統計學要學到什么程度?

1. ?統計學在數據分析中的定位??核心作用?&#xff1a;統計學是數據分析的底層方法論&#xff0c;涵蓋數據描述、推斷預測和模型構建。?兩大分支?&#xff1a;?描述統計?&#xff08;EDA階段&#xff09;&#xff1a;數據清洗、特征工程的基礎&#xff08;如均值/分布/…

[go] 橋接模式

橋接模式 是一種結構型設計模式&#xff0c; 可將一個大類或一系列緊密相關的類拆分為抽象和實現兩個獨立的層次結構&#xff0c; 從而能在開發時分別使用。 模型說明抽象部分&#xff08;Abstraction&#xff09;提供高層控制邏輯&#xff0c;依賴于完成底層實際工作的實現對象…

GitHub的使用教程

第一章&#xff1a;準備工作 1.1&#xff1a;安裝Git并設置你的GitHub賬戶 1.1.1&#xff1a;注冊 GitHub 賬號&#xff1a; 訪問 https://github.com/ 并注冊一個新賬號。 可以使用qq郵箱進行注冊 輸入郵箱后點擊sign up for GitHub,設置密碼后進行注冊&#xff0c;輸入驗…

Day56 Java面向對象10 方法重寫

Day56 Java面向對象10 方法重寫 1.為什么要方法重寫 當子類不需要父類方法的全部內容 或 父類的方法無法滿足子類的需求時,就需要在子類重寫父類的方法 2.如何方法重寫 重寫必須發生在繼承關系中,只能是子類重寫父類子類重寫的方法名必須和父類方法一致,方法體可以不同子類重寫…

【C++】標準庫中用于組合多個值的數據結構pair、tuple、array...

在 C 標準庫中&#xff0c;有多種數據結構可用于組合多個值&#xff0c;每種結構都有其特定的設計目的和適用場景。以下是主要組合數據結構的分類解析&#xff1a; 一、核心組合數據結構 1. std::pair (C98) 用途&#xff1a;存儲兩個相關值&#xff08;鍵值對、坐標點等&#…

深入解析C++ STL鏈表(List)模擬實現

目錄 一、需要實現的三個類及其成員函數接口 二、結點類的模擬實現 構造函數 三、迭代器類的模擬實現 1、迭代器類的作用 2、迭代器類模板參數說明 3、構造函數 4、前置運算符重載 5、后置運算符重載 6、前置 -- 運算符重載 7、后置 -- 運算符重載 8、運算符重載 …

將mysql數據庫表結構導出成DBML格式

前言 DBML&#xff08;數據庫標記語言&#xff09;是一種簡單易讀的 DSL 語言&#xff0c;用于定義數據庫結構。 因為需要分析商品模塊的表設計是否合理&#xff0c;所以需要圖形化表&#xff0c;并顯示表之前的關系。 想來想去&#xff0c;找到了DBML。所以就需要將數據庫結構…

玩轉tokenizer

&#x1f31f; 案例 1&#xff1a;加載現成的 BERT 分詞器from tokenizers import Tokenizer# 加載一個預訓練的 BERT tokenizer&#xff08;文件需要提前下載&#xff0c;比如bert-base-uncased&#xff09; tokenizer Tokenizer.from_file("bert-base-uncased-tokenize…

Day53--圖論--106. 島嶼的周長(卡碼網),110. 字符串接龍(卡碼網),105. 有向圖的完全聯通(卡碼網)

Day53–圖論–106. 島嶼的周長&#xff08;卡碼網&#xff09;&#xff0c;110. 字符串接龍&#xff08;卡碼網&#xff09;&#xff0c;105. 有向圖的完全聯通&#xff08;卡碼網&#xff09; 106. 島嶼的周長&#xff08;卡碼網&#xff09; 方法&#xff1a;深搜 思路&am…

Elasticsearch 數據建模與映射(Mapping)詳解

在 Elasticsearch 中&#xff0c;數據建模與映射&#xff08;Mapping&#xff09; 是決定搜索性能、存儲效率和功能支持的核心環節。合理的映射設計能讓搜索更精準、聚合更高效、存儲更節省。 本文將全面詳解 Elasticsearch 的 數據建模原則、字段類型、動態映射、自定義分析器…

5G工業一體機汽車零部件工廠的無紙化管理

在全球數字化轉型的浪潮中&#xff0c;制造業對信息化、智能化的需求日益強烈。尤其是在汽車零部件領域&#xff0c;生產線的復雜性、質量追溯的苛刻性以及對效率的高要求&#xff0c;迫切需要一種高效、可靠、可擴展的管理模式。以“5G工業一體機”為核心的無紙化管理&#xf…

項目管理工具

1、概述IT 項目生命周期通常可分為啟動、規劃、執行、監控與控制、收尾五個核心階段&#xff0c;每個階段的目標和任務不同&#xff0c;所依賴的工具也各有側重。以下按階段梳理常用工具&#xff0c;涵蓋項目管理、協作、技術開發等多個維度。2、啟動階段&#xff1a;明確項目目…

Linux 進程、線程與 exec/系統調用詳解

1. wait 與 waitpid —— 子進程資源回收1.1 waitpid_t wait(int *wstatus);功能&#xff1a;阻塞等待&#xff0c;回收任意子進程的資源空間。參數&#xff1a;wstatus&#xff1a;保存子進程退出狀態的變量地址NULL&#xff1a;不保存退出狀態返回值&#xff1a;成功&#xf…