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
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...