Go基礎語法

来源:https://www.cnblogs.com/lxx-coder/archive/2020/06/02/13028819.html
-Advertisement-
Play Games

1、數據類型 go語言支持的基礎類型: 整型:int,int8,int16,int32,int64 無符號整型:uint,uint8,uint16,uint32,uint64 其中預設類型為int,int表示32位或64位與操作系統有關 位元組:byte 布爾:bool 浮點型:float32,flo ...


1、數據類型

go語言支持的基礎類型

整型:int,int8,int16,int32,int64

無符號整型:uint,uint8,uint16,uint32,uint64

其中預設類型為int,int表示32位或64位與操作系統有關

位元組:byte

布爾:bool

浮點型:float32,float64,預設類型為float64

複數:complex64(32位實部和虛部),complex128(63位實部和虛部),預設類型為complex128

指針:uintptr,本質為無符整型uint8

字元串:string

字元:rune,本質為int32,可表示unicode編碼

錯誤類型:error,本質為介面

go支持的複合類型

指針*,數組,結構體struct

切片slice,字典map,通道channel,介面interface

 

基礎類型的預設值

數據類型 預設值
整型 0
浮點型 0
布爾值 false
字元串 ""


值類型和引用類型:

值類型和引用類型的區別在於,在賦值或作為函數參數調用時,值類型會複製一份新的拷貝,新數據的修改不會影響原數據,而引用類型只會複製變數的引用,引用數據的修改會影響原數據

值類型:基礎數據類型,指針,數組,結構體

引用類型:切片,map,channel,interface

 

數組和切片的定義

// 數組定義
a :=[5]int{1,2,3,4,5}
a := [...]int{1,2,3,4,5}
// 切片定義
a :=[]int{1,2,3,4,5}
a := a[1:3]

切片底層實際是一個三元組:指針、len、cap

使用make創建切片

make是Go語言的內置函數
mySlice1 := make([]int, 5)   //元素個數為5 ,初始值為0
mySlice2 := make([]int, 5, 10)   //len為5,cap為10
mySlice3 := []int{1, 2, 3, 4, 5}   //len為5,cap為5
mySlice4 := mySlice3 [1:3]  // len為2,cap為4,容量為1到最後

切片的容量增長:
函數append會智能地處理底層數組的容量增長,在切片容量小於1000個元素時, 總是會成倍地增加容量,一旦元素個數超過1000,時,容量的增長因數會設為1.25,也就是每次增加25%的容量

 

各個類型所占的記憶體(64位環境):

指針類型:8個位元組

string類型:16個位元組,包含一個指針,指向真實地址,和一個int類型表示長度

數組類型:總位元組數為單個元素占用大小乘以個數

切片類型:包含一個指向數組的指針,一個int類型表示長度,一個cap類型表示容量,總共24位元組

map類型:8個位元組,本身為一個指針,指向map自己

struct類型:大小為所有成員大小的總和

interface{}:占用記憶體為16位元組,包含兩個指針

 

map定義

map的鍵可以使任何值,包括內置類型或結構體,只要可以用==進行比較,但不能是切片、函數以及包含切片的數據結構由於具有引用語義不能作為映射的鍵

var colors map[string]string
colors["red"] = "#da1337" // panic: assignment to entry in nil map

聲明和初始化:

colors := make(map[string]string)
colors := map[string]string{}
取值:color, ok := colors["red"]
遍歷:for k, v := range colors

  

nil切片和空切片

創建nil切片:var slice []int

創建空切片:
slice := make([]int, 0)
slice := []int{}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉Boolean類型 !!'a' 通過兩個取反,可以強制轉換為Boolean類型。 轉Number類型 // String轉化為Number console.log(+'45'); // 日期輸出時間戳 console.log(+new Date); parseInt ~~,這種方法還可以將字元串轉 ...
  • 因此,我們往往期望,網頁排版時,只做一個語言版的網頁。然後把其它語言的純翻譯文字,每個語言一個文件。 ... 經過一番研究,我找到了辦法。那就是使用 Apache SSI(Server Side Includes)。 ...
  • 下麵就詳細介紹四種方法獲取data-*屬性的值 <li id="getId" data-id="122" data-vice-id="11">獲取id</li> 需要獲取的就是data-id 和 dtat-vice-id的值 一:getAttribute()方法 const getId = docu ...
  • 首先需要找到元素的下標,使用splice函數進行移除: var array = ["zhangsan", "lisi", "wangwu"]; var index = array.indexOf("lisi"); if (index > -1) { array.splice(index, 1); } ...
  • jquery判斷checked的三種方法: .attr('checked); //看版本1.6+返回:”checked”或”undefined” ;1.5-返回:true或false .prop('checked'); //16+:true/false .is(':checked'); //所有版本 ...
  • 概述 Express是目前最流行的基於Node.js的Web開發框架,可以快速地搭建一個完整功能的網站。 Express上手非常簡單,首先新建一個項目目錄,假定叫做hello-world。 $ mkdir hello-world 進入該目錄,新建一個package.json文件,內容如下。 { "n ...
  • 觀察者模式是一種經常使用的設計模式,在軟體系統中對象並不是孤立存在的,一個對象行為的改變可能會導致其他與之存在依賴關係的對象行為發生改變,觀察者模式用於描述對象之間的依賴關係。 模式動機 很多情況下,對象不是孤立存在的,想象這麼一個場景:你和女朋友去旅行,晚上回到賓館,女朋友穿著厚厚的大衣,從外表看 ...
  • Java生鮮電商平臺-生鮮電商數據分析思維以及指標(小程式/APP) 說明:在生鮮電商行業火爆和轉型的背後,數據分析往往成了主要的助推劑之一,通過對商品、用戶、平臺數據的分析,商家就能知道什麼樣的商品好賣,什麼樣的人愛買,哪一類的促銷活動更受歡迎等等,從而對症下藥調整策略,精準營銷。於是,近年來電商 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...