golang項目實戰,golang 最佳實踐

本文目錄一覽:

Golang入門到項目實戰 | golang介面和類型的關係

一個類型實現多個介面,例如:有一個Player介面可以播放音樂,有一個Video介面可以播放視頻,一個手機Mobile實現這兩個介面,既可以播放音樂,又可以播放視頻。

定義一個Player介面

定義一個Video介面

定義Mobile介面體

實現兩個介面

測試

運行結果

比如,一個寵物介面Pet,貓類型Cat和狗類型Dog都可以實現該介面,都可以把貓和狗當寵物類型對待,這在其他語言中叫多態。

定義一個Pet介面

定義一個Dog結構體

定義一個Cat結構體

實現介面

測試

運行結果

Golang入門到項目實戰 | golang並發變成之通道channel

Go提供了一種稱為通道的機制,用於在goroutine之間共享數據。當您作為goroutine執行並發活動時,需要在goroutine之間共享資源或數據,通道充當goroutine之間的管道(管道)並提供一種機制來保證同步交換。

根據數據交換的行為,有兩種類型的通道:無緩衝通道和緩衝通道。無緩衝通道用於執行goroutine之間的同步通信,而緩衝通道用於執行非同步通信。無緩衝通道保證在發送和接收發生的瞬間兩個goroutine之間的交換。緩衝通道沒有這樣的保證。

通道由make函數創建,該函數指定chan關鍵字和通道的元素類型。

這是創建無緩衝和緩衝通道的代碼塊:

語法

使用內置函數make創建無緩衝和緩衝通道。make的第一個參數需要關鍵字chan,然後是通道允許交換的數據類型。

這是將值發送到通道的代碼塊需要使用-運算符:

語法

一個包含5個值的緩衝區的字元串類型的goroutine1通道。然後我們通過通道發送字元串「Australia」。

這是從通道接收值的代碼塊:

語法

– 運算符附加到通道變數(goroutine1)的左側,以接收來自通道的值。

在無緩衝通道中,在接收到任何值之前沒有能力保存它。在這種類型的通道中,發送和接收goroutine在任何發送或接收操作完成之前的同一時刻都準備就緒。如果兩個goroutine沒有在同一時刻準備好,則通道會讓執行其各自發送或接收操作的goroutine首先等待。同步是通道上發送和接收之間交互的基礎。沒有另一個就不可能發生。

在緩衝通道中,有能力在接收到一個或多個值之前保存它們。在這種類型的通道中,不要強制goroutine在同一時刻準備好執行發送和接收。當發送和接收阻塞時也有不同的條件。只有當通道中沒有要接收的值時,接收才會阻塞。僅當沒有可用緩衝區來放置正在發送的值時,發送才會阻塞。

實例

運行結果

Golang入門到項目實戰 | golang 函數

函數的go語言中的一級公民,我們把所有的功能單元都定義在函數中,可以重複使用。函數包含函數的名稱、參數列表和返回值類型,這些構成了函數的簽名(signature)。

函數在使用之前必須先定義,可以調用函數來完成某個任務。函數可以重複調用,從而達到代碼重用。

go語言函數定義語法

語法解析:

go語言函數定義實例

定義一個求和函數

定義一個比較兩個數大小的函數

go語言函數調用

當我們要完成某個任務時,可以調用函數來完成。調用函數要傳遞參數,如何有返回值可以獲得返回值。

運行結果

Golang入門到項目實戰 | 第一個golang應用

1.創建一個文件夾,例如:golang入門到項目實戰

2.在golang入門到項目實戰文件夾中創建一個go文件,例如:test.go

3.在test.go中輸入如下內容:

4.編譯執行go run test.go

5.可僅選擇編譯執行go build test.go,則目錄下會多出個exe程序

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198632.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-04 10:26
下一篇 2024-12-04 10:26

相關推薦

  • 掌握magic-api item.import,為你的項目注入靈魂

    你是否曾經想要導入一個模塊,但卻不知道如何實現?又或者,你是否在使用magic-api時遇到了無法導入的問題?那麼,你來到了正確的地方。在本文中,我們將詳細闡述magic-api的…

    編程 2025-04-29
  • 使用Golang調用Python

    在現代軟體開發中,多種編程語言的協作是相當普遍的。其中一種使用場景是Golang調用Python,這使得在使用Python庫的同時,可以利用Golang的高性能和強大並發能力。這篇…

    編程 2025-04-29
  • 使用Golang創建黑色背景圖片的方法

    本文將從多個方面介紹使用Golang創建黑色背景圖片的方法。 一、安裝必要的代碼庫和工具 在開始創建黑色背景圖片之前,我們需要先安裝必要的代碼庫和工具: go get -u git…

    編程 2025-04-29
  • 如何將Java項目分成Modules並使用Git進行版本控制

    本文將向您展示如何將Java項目分成模塊,並使用Git對它們進行版本控制。分割Java項目可以使其更容易維護和拓展。Git版本控制還可以讓您跟蹤項目的發展並協作開發。 一、為什麼要…

    編程 2025-04-28
  • GitHub好玩的開源項目

    本文旨在介紹GitHub上一些好玩的開源項目,並提供代碼示例供讀者參考和學習。 一、Emoji列表 GitHub上有一份完整的Emoji列表,它支持各種平台和設備,方便用戶在Git…

    編程 2025-04-28
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • 鍵值存儲(kvs):從基礎概念到實戰應用

    本文將從基礎概念入手,介紹鍵值存儲(kvs)的概念、原理以及實戰應用,並給出代碼實現。通過閱讀本文,您將了解鍵值存儲的優缺點,如何選擇最適合的鍵值存儲方案,以及如何使用鍵值存儲解決…

    編程 2025-04-28
  • Python編程實戰:用Python做網頁與HTML

    Python語言是一種被廣泛應用的高級編程語言,也是一種非常適合於開發網頁和處理HTML的語言。在本文中,我們將從多個方面介紹如何用Python來編寫網頁和處理HTML。 一、Py…

    編程 2025-04-28
  • IIS部署Python項目

    本文將從多個方面詳細闡述在IIS上如何部署Python項目。包括安裝IIS、安裝Python、配置IIS、編寫和部署Python代碼等內容。 一、安裝IIS和Python 在開始進…

    編程 2025-04-28
  • 如何使用TKE來開發Java項目

    本文將從多個方面詳細闡述如何使用TKE(Theia IDE)來進行Java項目的開發。TKE是一個功能強大的在線集成開發環境,提供了大量的工具和插件,讓開發者可以高效地進行Java…

    編程 2025-04-28

發表回復

登錄後才能評論