Go語言——string、數組、切片以及map

一、string、數組、切片代碼

package mainimport "fmt"// 定義結構體
type student struct {id    intname  stringage   intscore float32
}func main() {// 使用var聲明切片var slice1 []intslice1 = append(slice1, 1)slice1 = append(slice1, 2)slice1 = append(slice1, 3)fmt.Println("打印切片 = ", slice1)// 使用make關鍵字初始化,下面的意思為長度為5,容量為10slice2 := make([]int, 5, 10)slice2[0] = 1fmt.Println("打印make切片 = ", slice2)// 打印長度和其容量fmt.Printf("切片的長度 = %d,切片的容量 = %d\n", len(slice2), cap(slice2))// 切片化:語法u[low:high]創建對已存在數組進行操作的切片slice3 := []int{1, 2, 3, 4}fmt.Println("slice3 = ", slice3, len(slice3), cap(slice3))newSlice := slice3[1:]fmt.Println("newSlice = ", newSlice, len(newSlice), cap(newSlice))// 新創建的切片與最初的切片指向的底層其實是同一個數組,只是他們的指針的位置不一樣,我們如果修改數組某個值,他們全都會修改newSlice[0] = 20fmt.Println("slice3 = ", slice3)fmt.Println("newSlice = ", newSlice)// 如果對新創建的切片進行append操作,如果沒有發生擴容會向原數組中插入數據,如果發生擴容,新切片會創建一個新的數組,這條同樣適用與原始切片newSlice = append(newSlice, 5)fmt.Println("添加元素后newSlice = ", newSlice)newSlice[0] = 10fmt.Println("添加元素后修改newSlice = ", newSlice)fmt.Println("添加元素后newSlice的 slice3 = ", slice3)// 使用var聲明數組var intList1 [5]intintList1 = [5]int{1, 2, 3, 4, 5}fmt.Println("intList1 = ", intList1)// 短聲明intList2 := [5]int{3, 4, 5, 6, 7}fmt.Println("intList2 = ", intList2)// 證明:在go語言中,數組是值傳遞的,修改傳入的數組,發現原數組不變updateArray(intList2)fmt.Println("修改后的原數組 = ", intList2)// 聲明結構體變量var s1 students1.score = 1s1.age = 18s1.name = "小明"// 短聲明s2 := student{id:    1,name:  "小貴",age:   30,score: 100,}// 使用&獲取結構體指針p := &s2fmt.Println("s2.name", s2.name)fmt.Println("p.name", p.name)// 使用s2修改屬性s2.name = "小新"fmt.Println("s2.name", s2.name)fmt.Println("p.name", p.name)// 使用p修改屬性p.name = "小p"fmt.Println("s2.name", s2.name)fmt.Println("p.name", p.name)// 定義一個字符串name := "lucky"// 將字符串轉化為字節數組給nameCopynameCopy := []byte(name)// 修改第二個字符nameCopy[1] = 'l'fmt.Printf("nameCopy = [%s]\n", string(nameCopy))// 定義空字符串var school stringfmt.Println("school = ", school)// 字符串支持 + 運算newName := name + " " + "day"fmt.Println("newName = ", newName)// 字符串支持 += 運算newName += "s"fmt.Println("newName = ", newName)if name != newName {fmt.Println("ok")}// 使用`初始化字符串text := `ABCD
EFG`fmt.Println("text = ", text)
}func updateArray(arr [5]int) {arr[0] = 100fmt.Println("修改后的數組 = ", arr)
}

二、map代碼

package mainimport ("fmt"
)func main() {// map的聲明names := map[int]string{1: "小明",2: "小李",3: "小劉",}names[4] = "小藍"// 更新之后,原map也被修改,說明是引用傳遞updateNames(names)ages := make(map[int]int)ages[1] = 10ages[2] = 34ages[3] = 18fmt.Println(names)// map刪除某個keydelete(names, 4)fmt.Println(names)// 遍歷map,每次打印結果不一樣,表示是無序的for k, v := range names {fmt.Println(k, v)}// map與數組一樣,也存在擴容的問題,為了防止頻繁擴容,最好給一個初始值initMap := make(map[int]int, 10)fmt.Println(len(initMap))
}func updateNames(names map[int]string) {names[1] = "小王"
}

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

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

相關文章

Android 開發中JDK 的使用和配置詳解

前些天發現了一個蠻有意思的人工智能學習網站,8個字形容一下"通俗易懂,風趣幽默",感覺非常有意思,忍不住分享一下給大家。 ??點擊跳轉到教程 在安卓開發中, 我們會使用到Java的JDK, JDK全程為(Java Development Kit)意思是:Java開發工具包。那么JDK 與我們的…

MPay碼支付系統第四方聚合收款碼多款支付插件個人免簽支付源碼TP8框架全開源

一、源碼描述 這是一套碼支付源碼(MPay),基于TP8框架,前端layui2.9后端PearAdmin,專注于個人免簽收款,通過個人的普通收款碼,即可實現收款通知自動回調,支持絕大多數商城系統&#…

國產數據庫鑄就數字基建新基石,助力農業產業轉型升級

中國科技企業以自主創新突破技術壁壘,為全球產業鏈重構注入新動能。廣東辰宜信息科技有限公司(以下簡稱“辰宜科技”)憑借自主研發的“博流分布式多模數據庫”等核心技術,作為支持數據流通的關鍵技術支撐,實現中國基礎…

《人工智能:如何重塑教育模式與學習圖景》

《人工智能:如何重塑教育模式與學習圖景》 引言 人工智能,特別是大型語言模型(如GPT-4/ChatGPT),正以前所未有的速度影響教育領域。從基礎教育到高等教育,再到職業教育,傳統教學模式正在被重新審…

硬件工程師面試常見問題(14)

第六十六問:運放--輸入偏置電流和輸入失調電流 輸入偏置電流lb:是由于運放兩個輸入極都有漏電流的存在。實際的運放,會有電流流入運放的輸入端的。那么輸入偏置電流就定義這兩個電流的平均值。 輸入失調電流 Ios:定義為兩個差分輸入端偏置電…

Docker+Kubernetes落地指南:從單機到集群的平滑遷移

一、為何必須升級到Kubernetes? 1.1 單機Docker的瓶頸 單機環境痛點: ├─ 資源利用率不均衡(CPU飆高 vs 內存閑置) ├─ 服務擴容需手動操作 ├─ 零宕機更新難以實現 └─ 網絡配置復雜(跨主機通信困難&am…

HttpPrinter 是一款功能強大的跨平臺 Web 打印解決方案

HttpPrinter 是一款功能強大的跨平臺 Web 打印解決方案,支持多種編程語言和打印場景,適用于企業級報表打印、靜默打印、遠程打印等需求。以下是其核心功能、技術特點及使用方法的綜合分析: 一、核心功能與特點 跨平臺與多語言支持 支持 Java…

Selenium Web自動化測試學習筆記(一)

自動化測試 技術手段模擬人工,執行重復性任務,準確率100%,高于人工 selenium 可通過瀏覽器驅動控制瀏覽器,通過元素定位模擬人工,實現web自動化,沒有焦點(把瀏覽器放在最小化依然可以&#x…

TikTok 矩陣運營新手實操保姆級教程 2.0 版本

在當下這個全球化的數字浪潮中,TikTok 這片充滿機遇的流量藍海,正吸引著無數創業者和品牌方爭相角逐。而要想在這激烈的競爭中脫穎而出,TikTok 矩陣運營無疑是至關重要的制勝法寶。今天,就給大家送上這份超實用的新手實操教程&…

使用DeepSeek協助恢復歷史數據

最近,工作中遇到比較老的數據庫備份文件數據恢復的問題。過程中使用DeepSeek分析,很快的解決了從除備份文件本身其他信息一概不知的條件下,數據庫選型問題和環境搭建問題。下面把實施過程分享出來,給其他遇到相同問題的小伙伴提供…

【特殊場景應對6】頻繁跳槽:行業特性與穩定性危機的解釋邊界

寫在最前 作為一個中古程序猿,我有很多自己想做的事情,比如埋頭苦干手搓一個低代碼數據庫設計平臺(目前只針對寫java的朋友),比如很喜歡幫身邊的朋友看看簡歷,講講面試技巧,畢竟工作這么多年,也做到過高管,有很多面人經歷,意見還算有用,大家基本都能拿到想要的offe…

企業智能化第一步:用「Deepseek+自動化」打造企業資源管理的智能中樞

隨著Deepseek乃至AI人工智能技術在企業中得到了廣泛的關注和使用,多數企業開始了AI探索之旅,迅易科技也不例外,且在不斷地實踐中強化了AI智能應用創新的強大能力。 為解決企業知識管理碎片化、提高內部工作效率等問題,迅易將目光放…

大連理工大學選修課——圖形學:第三四章 基本圖形生成算法

第三四章 基本圖形生成算法 圖形生成 概念:如何在指定的輸出設備上,根據坐標描述,構造基本二維幾何圖形 基本二維幾何圖形:點、直線、圓、多邊形域、字符串及相關屬性等。 圖形生成的概念 是在指定的輸出設備上,根…

怎樣避免住宅IP被平臺識別

要有效避免住宅IP被平臺識別,需從IP質量選擇、環境參數偽裝、行為模式模擬、技術細節處理等多維度構建防御體系。以下是基于行業實踐的綜合性解決方案: 一、確保住宅IP的高純凈度 選擇真實家庭網絡IP 驗證IP是否歸屬真實家庭寬帶(非機房IP偽裝…

WPF 觸發器 Trigger

觸發器 Trigger 觸發器(Trigger)是 WPF 中的一種機制: 當某個條件滿足時,自動改變控件的某些屬性,比如顏色、大小、透明度等。 換句話說,就是"如果……那么就……" 的一種規則。 常見觸發器類…

NLP核心技術解析:大模型與分詞工具的協同工作原理

文章目錄 一、核心關系概述二、分詞工具的核心作用三、未登錄詞(OOV)問題3.1 問題本質分析3.2 解決方案3.2.1 預對齊詞匯表(最優解)3.2.2 子詞回退策略3.2.3 詞匯表擴展(適合專業領域) 3.3 技術選型建議3.4…

vscode預覽模式(點擊文件時默認覆蓋當前標簽,標簽名稱顯示為斜體,可通過雙擊該標簽取消)覆蓋標簽、新窗打開

文章目錄 VS Code 預覽模式如何取消預覽模式(即“固定”標簽頁)?預覽模式有什么用? VS Code 預覽模式 在 VS Code 中,當你單擊文件瀏覽器(例如,資源管理器側邊欄)中的某個文件時&am…

MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么?

接上文 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 是怎樣練成的? user/_sleep 是什么? book-riscv-rev3.pdf 3.8節有對Xv6 binary文件的格式描述 Xv6 binaries are formatted in the widely-used ELF format, defined in (kernel/elf.h). An …

【AI科技】AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模塊化部署,可在 AMD Instinct GPU 上實現可擴展 AI

AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模塊化部署,可在 AMD Instinct GPU 上實現可擴展 AI 現代 AI 工作負載的規模和復雜性不斷增長,而人們對性能和部署便捷性的期望也日益提升。對于在 AMD Instinct? GPU 上構建 AI 和 HPC 未來…

【含文檔+PPT+源碼】基于微信小程序連鎖藥店商城

項目介紹 本課程演示的是一款基于微信小程序連鎖藥店商城,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系統 3.該項目附帶的…