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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...