Go語言學習筆記-1

来源:https://www.cnblogs.com/WenTesla/archive/2023/01/15/17053977.html
-Advertisement-
Play Games

Go語言上手(一) 這是我參與「第五屆青訓營 -後端場」筆記創作活動的的第一篇筆記。 先上代碼倉庫: WenTesla/GoLang-Study: 一個學習Go的倉庫 (github.com) 這個倉庫下放下我目前學習GO的所有筆記以及代碼,還未整理,最後會將倉庫進行整理。 基礎語法 一:類型 GO ...


Go語言上手(一) 

這是我參與「第五屆青訓營 -後端場」筆記創作活動的的第一篇筆記。

先上代碼倉庫:

WenTesla/GoLang-Study: 一個學習Go的倉庫 (github.com)

這個倉庫下放下我目前學習GO的所有筆記以及代碼,還未整理,最後會將倉庫進行整理。

基礎語法

一:類型

GO的語法類似C和Python,感覺就像縫合怪

定義變數

若要聲明變數,需要使用 var 關鍵字:

單一定義:

var firstName string

前一個語句聲明 string 類型中的一個名為firstName 的變數。

這裡總結一下

標識符 xxx 類型

多定義

var (
   firstName, lastName string
   age int
)

加上括弧()

像C語言的結構體一樣定義,只不過順序是反的

Go可以自動推斷類型

如下所示

var (
  firstName = "John"
  lastName = "Doe"
  age       = 32
)

或者如下:

a:="111"
b:=2
c:=2.1

這一點需要註意,GO語言的聲明之後必須使用,不然會報錯

這一個特性真的讓我感到疑惑。不知道為何這樣使用

Go的基本類型如下

1布爾型 布爾型的值只可以是常量 true 或者 false。一個簡單的例子:var b bool = true。
2 數字類型 整型 int 和浮點型 float32、float64,Go 語言支持整型和浮點型數字,並且支持複數,其中位的運算採用補碼。
3 字元串類型: 字元串就是一串固定長度的字元連接起來的字元序列。Go 的字元串是由單個位元組連接起來的。Go 語言的字元串的位元組使用 UTF-8 編碼標識 Unicode 文本。
4 派生類型: 包括: (a) 指針類型(Pointer) (b) 數組類型 (c) 結構化類型(struct)(d) Channel 類型 (e) 函數類型 (f) 切片類型 (g) 介面類型(interface) (h) Map 類型

這裡的Go不像java一樣一切皆對象,派生類型比較多

二:基本庫

1.基本列印輸出

fmt函數,相當於java的System類.

輸出又類似C語言

fmt.printf(xxx)

2.切片

s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("get:", s[2])   // c
fmt.Println("len:", len(s)) // 3

這裡創建切片和使用切片,同時列印切片的長度

Go的切片非常靈活,類似Python的使用,使用append函數是將數值追加到切片最後,同時返回切片的。使用copy函數可以創建切片的副本,同時不影響之前的切片,這裡要註意,切片在函數的參數是作為指針傳入,這一點與數組不同

3.json

Go的json非常方便,這裡不像json一樣繁瑣,直接創建結構體可以

type Student struct {
Name string `json:"name"`
Sid  string `json:"sid"`
}

序列化使用Marshal函數

    s := Student{Name: "jonh" ,Sid: "10323"}
//序列化
p ,err := json.Marshal(s)

反序列化使用Unmarshal函數

//反序列化
err = json.Unmarshal(p,&s)

創建結構體時候的``是序列化json的時候對應數值的鍵值

4.time

GO的時間使用非常簡單

比java簡單

time.Now()獲取時間

now.xxx()獲取年月日

now.unix()時間戳

時間的加減

Add(during)函數實現某個時間 + 時間間隔

Sub(Time)獲取時間差值

Equal()比較兩者時間的相等

Before和After顧名思義

 

5.int和string的相互轉化

類似java,比C++強,C++好像沒有對應的Api

strconv包

strconv.ParesXXX (y)這裡XXX表示要轉換的類型,

同時可以再傳入參數,比如指定要轉換的類型

6.定時器

GO語言這一點有點意思,別的語言還沒發現這種語法,特別是作為迴圈使用定時器,js的好像是setTimeOut,這個api是延時器

ticker := time.Tick(time.Second) //創建1秒間隔的定時器
   for i := range ticker {//每1秒都會執行
       fmt.Println(i)
  }
 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 這篇博文續接的是 UML建模、設計原則、創建型設計模式、行為型設計模式,有興趣的可以看一下 3.3、結構型 這些設計模式關註類和對象的組合。將類和對象組合在一起,從而形成更大的結構 * 3.3.1、proxy 代理模式 定義:為某對象提供一種代理以控制對該對象的訪問。即:客戶端通過代理間接地訪 ...
  • 面向對象編程(OOP) 屬性+方法=類 面向過程 步驟清晰簡單, 第一步做什麼, 第二步做什麼... 適用於處理簡單的問題 面向對象 物以類聚和分類的思想模式 思考解決問題需要做出哪些分類, 然後對這些分類進行單獨思考和研究 最後,將分類下的細節進行了面向過程的研究 面向對象適用於複雜問題, 適合處 ...
  • C++|變數 前言 在C++編程中,需要用到很多種變數 本文將詳談幾種常見變數 如有錯誤,歡迎指出 零、變數格式 定義並賦值 數據類型 變數名=值; 定義 數據類型 變數名; 賦值 變數名=值; 輸入 cin>>變數名; 輸出 cout<<變數名; 一、數字數據類型 如圖所示,雖然 C++ 提供了許 ...
  • 實踐環境 Odoo 14.0-20221212 (Community Edition) web_responsive-14.0.1.2.1.zip https://apps.odoo.com/apps/modules/14.0/web_responsive/ 操作步驟 1、把下載的web_respo ...
  • 1 簡介 Cloud SQL 是GCP上的關係型資料庫,常用的有三種方式來創建: (1) 界面操作 (2) 命令行 gcloud (3) Terraform 在開始之前,可以查看:《初始化一個GCP項目並用gcloud訪問操作》。 2 GCP 操作界面 登陸GCP,選擇SQL,可以創建MySQL、P ...
  • 在上一篇博客中我們有提到一個詞叫做常量,現在就來講講它常量:指的是在程式運行過程中值不會發生改變的量其實我們也有寫過,在這個輸出語句中,這個1就是常量簡單來說程式運行下去,這個1它怎麼樣也不會變成3吧變數:指的是在程式運行過程中值會發生改變的量那麼怎麼來定義一個變數呢我們先來試著定義一個x,值就先為 ...
  • Spring基本介紹02 5.簡單模擬Spring基於XML配置的程式 5.1需求說明 自己寫一個簡單的Spring容器,通過讀取beans.xml,獲取第一個Javabean:Monster的對象,給該對象屬性賦值,放入到容器中,並輸出該對象信息 也就是說,不使用spring原生框架,我們自己簡單 ...
  • 前言 C 語言是一門功能強大的專業化編程語言,深受專業程式員和業餘編程愛好者的喜愛,同時 C 語言也是當今最流行的嵌入式開發語言。大多數嵌入式項目的開發都是用 C 語言來編寫的。 既然 C 語言這麼厲害,那學習 C 語言應該用什麼軟體呢? 推薦使用 Dev-Cpp 在這我推薦初學者使用 Dev-Cp ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...