Go語言--語法基礎6--基本數據類型--數組類型(1)

Go 語言提供了數組類型的數據結構。
數組是具有相同唯一類型的一組已編號且長度固定的數據項序列,這種類型可以是任意的
原始類型例如整型、字符串或者自定義類型。相對于去聲明number0,number1, ..., and
number99 的變量,使用數組形式 numbers[0], numbers[1] ...,numbers[99]更加方便且
易于擴展。數組元素可以通過索引(位置)來讀取(或者修改),索引 從0 開始,
第一個元素索引為 0,第 二個索引為 1,以此類推
使用數組的步驟
1. 聲明數組并開辟空間,初始化數組。
2. 給數組各個元素賦值 ( 默認零值 )
3. 使用數組 ==>讀數組,寫數組

聲明數組

Go 語言數組聲明需要指定元素類型及元素個數,語法格式如下:
var array_name [SIZE]array_type => var a [10]int
c 語言的數組:
array_type array_name[size]; => int a [10];
以上為一維數組的定義方式。數組長度 SIZE 必須是整數且大于 0
數組的下標是從 0 開始的 , 數組下標必須在指定范圍內使用,否則報 panic
數組中的元素可以是任何數據類型,包括值類型和引用類型,但是不能混用。
數組創建后,如果沒有賦值,有默認值 ( 零值 )
數值類型數組:默認值為 0 , 字符串數組: 默認值為 "" bool 組: 默認值為 false。
1 、聲明數組并開辟空間
// 例如以下定義了數組 f 長度為 10 ,類型為 float32
var f [10] float32
// 定義一個長度為 3 元素類型為 int 的數組 a
var a [3]int
在沒有明確內存存儲位置的時候,默認在棧區。
其他聲明方式:
[32] byte // 長度為 32 的字節數組
[2*N] struct {x, y int32} // 復雜類型數組
[100] *float64 // 指針數組
[3][5] int // 二維數組
[2][2][2] float64 // 等同于 [2]([2]([2]float64))
注意:數組的長度必須是常量,并且長度是數組類型的一部分。 一旦定義,長度不能變。 [5]int 和 [10]int 是不同的類型。
1) 數組的地址可以通過數組名來獲取 &intArr
2) 數組的第一個元素的地址,就是數組的首地址
3) 數組的各個元素的地址間隔是依據數組的類型決定,比如 int64 -> 8int32->4...

初始化數組

1
初始化數組時可以使用初始化列表來設置數組元素的值。
func main() {
var testArray [3]int //數組會初始化為int類型的零值
var numArray = [3]int{1,2} //使用指定的初始值完成初始化
var cityArray = [3]string{"Beijing", "Shanghai", "Guangzhou"}
fmt.Println(testArray) //[0 0 0]
fmt.Println(numArray) //[1 2 0]
fmt.Println(cityArray) //[Beijing Shanghai Guangzhou]
}

方法2:
讓編譯器根據初始值的個數自行推斷數組的長度:

func main() {
var testArray [3]int //數組會初始化為int類型的零值
var numArray = [...]int{1, 2} //使用指定的初始值完成初始化
var cityArray = [...]string{"Beijing", "Shanghai", "Guangzhou"}
fmt.Println(testArray) //[0 0 0]
fmt.Println(numArray) //[1 2]
fmt.Printf("type of numArray:%T\n", numArray) //type of
numArray:[2]int
fmt.Println(cityArray) //[Beijing Shanghai
Guangzhou]
fmt.Printf("type of numArray:%T\n", cityArray) //type of numArray:
[3]string
}

方法3:
使用指定索引值的方式初始化數組:

func main() {
a := [...]int{1: 1, 3: 5} //第一個1是下標,第二個1 是值, 3是下
標,5是值
fmt.Println(a) // [0 1 0 5]
fmt.Printf("type of a:%T\n", a) //type of a:[4]int
}

數組賦值

o 語言的數組的賦值,即給定義好的數組指定的索引的位置設置對應的 值。
Go 語言數組賦值語法:
arr[index] = value
給定義好的數組的指定索引位置處賦值
package main
import (
"fmt"
)
func main() {
//給定義好的數組的指定索引位置處賦值
var arrHaiCoder [3]string //定義數組,沒有初始化,默認是""
arrHaiCoder[0] = "Hello" //給數組元素賦值
arrHaiCoder[1] = "中華網"
arrHaiCoder[2] = "China"
fmt.Println("arrHaiCoder0 =", arrHaiCoder[0]) //數組元素的輸出
fmt.Println("arrHaiCoder1 =", arrHaiCoder[1])
fmt.Println("arrHaiCoder2 =", arrHaiCoder[2])
}
數組重新賦值
數組指定索引的位置有值后,也可以通過索引重新設置值
package main
import (
"fmt"
)
func main() {
//數組指定索引的位置有值后,也可以通過索引重新設置值
var arrHaiCoder = [3]string{"Hello", "中華網", "China"} //初始化列
表初始化數組
arrHaiCoder[2] = "Openlab" //指定修改第三個元素
4/6
5/6
fmt.Println("arrHaiCoder0 =", arrHaiCoder[0])
fmt.Println("arrHaiCoder1 =", arrHaiCoder[1])
fmt.Println("arrHaiCoder2 =", arrHaiCoder[2])
}
注意:數組的長度必須是常量,并且長度是數組類型的一部分。一旦定義,長度不能變。 [5]int和[10]int是不同的類型。
var a [3] int
var b [4] int
a = b //不能這樣做,因為a和b是不同類型

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

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

相關文章

左神算法之給定一個數組arr,返回其中的數值的差值等于k的子數組有多少個

目錄 1. 題目2. 解釋3. 思路4. 代碼5. 總結 1. 題目 給定一個數組arr,返回其中的數值的差值等于k的子數組有多少個 2. 解釋 略 3. 思路 直接用hashSet進行存儲,查這個值加上k后的值是否在數組中 4. 代碼 public class Problem01_SubvalueEqualk {…

自回歸(AR)與掩碼(MLM)的核心區別:續寫還是補全?

自回歸(AR)與掩碼(MLM)的核心區別:用例子秒懂 一、核心機制對比:像“續寫”還是“完形填空”? 維度自回歸(Autoregressive)掩碼語言模型(Masked LM)核心目標根據已生成的token,預測下一個token(順序生成)預測句子中被“掩碼”的token(補全缺失信息)輸入輸出輸入…

后端開發兩個月實習總結

前言 本人目前在一家小公司后端開發實習差不多兩個月了,現在準備離職了,就這兩個月的實習經歷寫下這篇文章,既是對自己實習的一個總結,也是給正在找實習的小伙伴以及未來即將進入到后端開發這個行業的同學的分享一下經驗。 一、個…

Python基礎(??FAISS?和??Chroma?)

??1. 索引與查詢性能? ??指標????FAISS????Chroma????分析????索引構建速度??72.4秒(5551個文本塊)91.59秒(相同數據集)FAISS的底層優化(如PQ量化)加速索引構建,適合批…

Windows下memcpy_s如何在Linux下使用

Windows下代碼如下 memcpy_s(pLine->ppBuf[i], m_ColorLineByte, pIn nOffset, m_ColorLineByte); 方案 1:使用標準 memcpy 手動檢查(最通用) // 檢查參數有效性 if (pLine->ppBuf[i] nullptr || pIn nullptr || m_ColorLi…

2025年數學算法與自動化控制國際會議(ICMAAC 2025)

2025年數學算法與自動化控制國際會議(ICMAAC 2025) 2025 International Conference on Mathematical Algorithms and Automation Control 一、大會信息 會議簡稱:ICMAAC 2025 大會地點:中國長沙 審稿通知:投稿后2-3日…

C語言數組介紹 -- 一維數組和二維數組的創建、初始化、下標、遍歷、存儲,C99 變長數組

目錄 1. 一維數組 1.1 數組的概念 1.2 一維數組的創建 1.3 一維數組的初始化 1.4 數組的類型 1.5 數組下標 1.5.1 數組元素的遍歷 1.5.2 數組的輸入 1.6 一維數組在內存中的存儲 1.7 sizeof 計算數組元素個數 2. 二維數組 2.1 二維數組的創建 2.2 二維數組的初始…

SpringAI + DeepSeek大模型應用開發 - 進階篇(上)

三、SpringAI 2. 哄哄模擬器 2.1 提示詞工程 提示詞工程(Prompt Engineering):通過優化提示詞,使大模型生成盡可能理想的內容,這一過程就叫提示詞工程。 (1)清晰明確的指令 談談人工智能 …

Spring Boot實現異常處理

Spring Boot 提供了多種靈活的方式實現異常處理,以下是核心方案和最佳實踐: 一、基礎異常處理方案 1. ControllerAdvice ExceptionHandler(全局處理) ControllerAdvice public class GlobalExceptionHandler {// 處理特定異常&…

【目標檢測】IOU的概念與Python實例解析

🧑 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

Vue2中如何使用vue-print-nb打印功能

插件官網地址&#xff1a;vue-print-nb - npm 1.安裝 npm install vue-print-nb --save 2.導入打印插件 //main.js import Print from vue-print-nb Vue.use(Print); 3.配置參數 4.頁面使用 <div id"printDiv">打印內容</div><el-button v-print&…

Matplotlib快速入門

目錄 基本使用 解決中文亂碼 一個坐標系繪制多個圖像 多個坐標系繪制 基本使用 什么是Matplotlib 是專門用于開發2D圖表(包括3D圖表)以漸進&#xff0c;交互式方式實現數據可視化 為什么要學習matplotlib 可視化是在整個數據挖掘的關鍵輔助工具&#xff0c;可以清晰的理解…

扣料不允許‘貨物移動’

遇到了報錯&#xff0c;不允許貨物移動 以為又是和之前一樣是訂單已經關閉&#xff0c;看是領錯料還是財務誤關的原因&#xff0c;但是co03一看訂單狀態并沒有關閉 原因就是這個CRTD 訂單只是創建了&#xff0c;但是沒有下達 找個正常的看看&#xff1a; 一般訂單創建和下達都…

【AI】全新AI測試系列之二--------AI自動化測試,提高測試效率

目錄 一、自動化測試 1、與手動測試對比 2、自動化測試流程 二、自動化測試環境搭建 三、web自動化使用AI的兩種方式 1、利用DeepSeek快速生成腳本 2、pycharm集成通義靈碼 四、通義靈碼實戰 1、使用提示詞生成代碼 2、使用pytest框架 前言&#xff1a;上一章節只要是…

npm包沖突install失敗

--legacy-peer-deps是npm&#xff08;Node.js包管理器&#xff09;的一個命令行選項&#xff0c;主要用于解決依賴沖突問題。當安裝依賴時&#xff0c;npm默認會嚴格檢查peer dependencies&#xff08;對等依賴&#xff09;的版本兼容性&#xff0c;可能導致安裝失敗。啟用此選…

68、數據訪問-crud實驗-刪除用戶完成

68、數據訪問-crud實驗-刪除用戶完成 以下是完成“數據訪問-CRUD實驗-刪除用戶”功能的一般步驟&#xff0c;以常見Web應用框架&#xff08;如Spring Boot MyBatis-Plus、Django、Ruby on Rails&#xff09;為例&#xff1a; #### 準備工作 - **數據庫表設計**&#xff1a;確…

實現 TurtleBot3 多點軌跡跟蹤導航

系統架構 move_base本身不支持一次性發送多個目標點并自動按順序導航,使用nav_msgs/Path消息類型發布多個路徑點,然后讓機器人按順序依次到達每個路徑點。 發布一個包含多個路徑點的Path消息(可選,用于在RVIZ中顯示路徑)。按順序將每個路徑點作為MoveBaseGoal發送給move_…

《人性的優點》:破解憂慮密碼,構建積極人生

我強烈推薦4本可以改變命運的經典著作&#xff1a; 《壽康寶鑒》在線閱讀白話文《欲海回狂》在線閱讀白話文《陰律無情》在線閱讀白話文《了凡四訓》在線閱讀白話文 一、世界觀&#xff1a;憂慮的本質與生命的真相 &#xff08;一&#xff09;憂慮是精神的“虛構苦難” 卡耐基…

D2554探鴿協議,sensor屬性,回調

D2554探鴿協議&#xff0c;sensor屬性&#xff0c;回調 各屬性的默認值 對比度&#xff1a; 0x4064&#xff08;10進制&#xff09; 清晰度、銳度&#xff1a; 0x000&#xff08;10進制&#xff09; 飽和度&#xff1a; …

.NET 4.7中使用NLog記錄日志到數據庫表

1. 首先安裝必要的NuGet包 在項目中安裝以下NuGet包&#xff1a; NLog NLog.Config (可選&#xff0c;用于自動生成配置文件) 相應的數據庫提供程序&#xff08;如System.Data.SqlClient for SQL Server&#xff09; Install-Package NLog Install-Package NLog.Config In…