Go 變數

来源:https://www.cnblogs.com/xiaowange/archive/2023/08/08/17615427.html
-Advertisement-
Play Games

在Go中,有不同的**變數類型**,例如: - `int` 存儲整數(整數),例如123或-123 - `float32` 存儲浮點數字,帶小數,例如19.99或-19.99 - `string` - 存儲文本,例如“ Hello World”。字元串值用雙引號括起來 - `bool` 存儲具有兩個 ...


在Go中,有不同的變數類型,例如:

  • int 存儲整數(整數),例如123或-123
  • float32 存儲浮點數字,帶小數,例如19.99或-19.99
  • string - 存儲文本,例如“ Hello World”。字元串值用雙引號括起來
  • bool 存儲具有兩個狀態的值:true或false

聲明(創建)變數

在Go中,有兩種聲明變數的方法:

使用var關鍵字:

使用var關鍵字,後跟變數名稱和類型:

語法

var variablename type = value

註意:您始終必須指定typevalue(或兩者)。

使用:=符號

使用:=符號,後跟變數值:

語法

variablename := value

註意:在這種情況下,變數的類型是從值中推斷的(這意味著編譯器根據值決定變數的類型)。

註意:無法使用:=聲明變數,而不將值分配給它。

具有初始值的變數聲明

如果從一開始就知道變數的值,則可以在一行中聲明變數併為其賦值:

示例

package main
import ("fmt")

func main() {
  var student1 string = "John" //type is string
  var student2 = "Jane" //type is inferred
  x := 2 //type is inferred

  fmt.Println(student1)
  fmt.Println(student2)
  fmt.Println(x)
}

註意:變數student2x的變數類型是從其值推斷的。

沒有初始值的變數聲明

在Go中,所有變數都已初始化。因此,如果聲明變數而沒有初始值,則其值將設置為其類型的預設值:

示例

package main
import ("fmt")

func main() {
  var a string
  var b int
  var c bool

  fmt.Println(a)
  fmt.Println(b)
  fmt.Println(c)
}

示例解釋

在此示例中有3個變數:

  • a
  • b
  • c

這些變數已聲明,但未分配初始值。

通過運行代碼,我們可以看到它們已經具有其各自類型的預設值:

  • a""
  • b0
  • cfalse

聲明後的值分配

可以在聲明變數後將值分配給變數。這對於值最初未知的情況很有幫助。

示例

package main
import ("fmt")

func main() {
  var student1 string
  student1 = "John"
  fmt.Println(student1)
}

註意:無法使用:=聲明變數,而不將值分配給它。

var和 := 之間的區別

var:=之間存在一些小差異:

var :=
可以在函數內部和外部使用 僅可在函數內部使用
可以分別進行變數聲明和值分配 變數聲明和值分配不能分別進行(必須在同一行中完成)

示例

此示例顯示在函數外部使用var關鍵字聲明變數:

package main
import ("fmt")

var a int
var b int = 2
var c = 3

func main() {
  a = 1
  fmt.Println(a)
  fmt.Println(b)
  fmt.Println(c)
}

示例

由於:=在函數外使用,因此運行程式會導致錯誤。

package main
import ("fmt")

a := 1

func main() {
  fmt.Println(a)
}

結果:

./prog.go:5:1: syntax error: non-declaration statement outside function body

Go多變數聲明

在Go中,可以在同一行中聲明多個變數。

示例

此示例顯示如何在同一行中聲明多個變數:

package main
import ("fmt")

func main() {
  var a, b, c, d int = 1, 3, 5, 7

  fmt.Println(a)
  fmt.Println(b)
  fmt.Println(c)
  fmt.Println(d)
}

註意: 如果使用type關鍵字,則每行只能聲明一個類型的變數。

如果未指定type關鍵字,則可以在同一行中聲明不同類型的變數:

示例

package main
import ("fmt")

func main() {
  var a, b = 6, "Hello"
  c, d := 7, "World!"

  fmt.Println(a)
  fmt.Println(b)
  fmt.Println(c)
  fmt.Println(d)
}

在塊中聲明Go變數

多個變數聲明也可以組合到塊中以增加可讀性:

示例

package main
import ("fmt")

func main() {
   var (
     a int
     b int = 1
     c string = "hello"
   )

  fmt.Println(a)
  fmt.Println(b)
  fmt.Println(c)
}

Go變數命名規則

變數可以有簡短的名稱(如x和y)或更描述性的名稱(age,price,carname等)。

Go變數命名規則:

  • 變數名稱必須以字母或下劃線字元(_)開頭
  • 變數名稱不能以數字開頭
  • 變數名稱只能包含字母數字字元和下劃線(a-z,A-Z0-9_
  • 變數名稱區分大小寫(age,Age和AGE是三個不同的變數)
  • 變數名稱的長度沒有限制
  • 變數名稱不能包含空格
  • 變數名稱不能是任何Go關鍵字

多字變數名稱

具有多個單詞的變數名稱可能難以閱讀。

有幾種技術可用於使它們更易於閱讀:

駝峰命名法

每個單詞,除了第一個單詞以外,都以大寫字母開頭:

myVariableName = "John"

帕斯卡命名法

每個單詞以大寫字母開頭:

MyVariableName = "John"

蛇形命名法

每個單詞之間用下劃線字元分隔:

my_variable_name = "John"

最後

為了方便其他設備和平臺的小伙伴觀看往期文章,鏈接奉上:

公眾號搜索Let us Coding知乎開源中國CSDN思否掘金InfoQ簡書博客園慕課51CTOhelloworld騰訊開發者社區阿裡開發者社區

看完如果覺得有幫助,歡迎點贊、收藏關註


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

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 我們經常會遇到一個場景,比如在一個列表中批量獲取用戶的信息。 如果我們一次性往後端發送幾十條請求是非常愚蠢的事情。此時我們就要學會如何使用批量獲取的邏輯。 但是批量獲取有一個問題就是,我需要在用戶列表項的上層去獲取,然後再把結果分發給下層 ...
  • 分享的 WebStorm 2023.2 最新激活註冊碼,可免費永久激活,親測有效,下麵是詳細文檔哦~ 申明:本教程 WebStorm 激活碼收集於網路,請勿商用,僅供個人學習使用,如有侵權,請聯繫作者刪除。若條件允許,希望大家購買正版 ! PS: 本教程最新更新時間: 2023年08月08日~ 前言 ...
  • 最近,群友分享了一個很有意思的效果: ![](https://img2023.cnblogs.com/blog/608782/202308/608782-20230808101320920-311621134.gif) 原效果的網址:[frosted-glass](https://frosted-g ...
  • 說到 Hybrid App(混合應用)大家都不陌生,因為這種開發模式大行其道發展的這些年取代了很多原生和 Web 應用,為什麼大家對這種「Native + HTML5」的開發模式額外偏愛呢? 因為一方面在一定程度上兼顧了原生應用的優質體驗,另一方面又兼顧到了 HTML5 靈活的開發模式。 這種模式的 ...
  • 為了降低啟動時間,quarkus下的常規作用域bean遵循懶載入規則,但有時我們希望bean可以更早實例化,本篇,咱們一起來瞭解懶載入規則和改變規則的方法 ...
  • 由於垃圾收集演算法的實現涉及大量的程式細節,而且各個平臺的虛擬機操作記憶體的方法又各不相同,因此本節不打算過多地討論演算法的實現,只是介紹幾種演算法的思想及其發展過程。 ...
  • ##### 該切麵功能適用場景 - 下單請求多次提交,導致生成多個相同的訂單 ##### 解決方案 - 前端解決:限制點擊下單按鈕為1次後失效。不足:用戶體驗下降,能繞過前端 - 後端解決:防重提交切麵解決,自定義註釋實現該功能(如下) - 步驟: - 自定義註釋類RepeatSubmit - 創建 ...
  • ## 9.1、環境搭建 ### 9.1.1、創建module ![image](https://img2023.cnblogs.com/blog/2052479/202308/2052479-20230806234218377-617105837.png) ### 9.1.2、選擇maven ![i ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...