【Golang】Go語言變量

Go語言變量

文章目錄

  • Go語言變量
    • 一、Go語言變量
    • 二、變量聲明
      • 2.1、第一種聲明方式
      • 2.2、第二種聲明方式
      • 2.3、第三種聲明方式
      • 2.4、多變量聲明
      • 2.5、打印變量占用字節

一、Go語言變量

  • 變量來源于數學,是計算機語言中能存儲計算結果或能表示值抽象的概念
  • 變量可以通過變量名訪問
  • Go語言變量名由字母、數字、下劃線組成,其中首個字符不能為數字
  • 聲明變量的一般形式是使用var關鍵字:
var 變量名 變量類型
  • 可以一次聲明多個變量:
var 變量名1, 變量名2 變量類型
  • 以下是一個實例
package mainimport "fmt"func main() {var a string = "Runoob"  // 變量 a 類型 string字符串 值為 Runoobfmt.Println(a)   // 打印 a 變量var b, c int = 1, 2   //  變量b c 類型 int 值為 b=1 c=2fmt.Println(b,c)
}
  • 以上實例輸出結果如下
Runoob
1 2

二、變量聲明

2.1、第一種聲明方式

  • 第一種,指定變量類型,如果沒有初始化值,則變量默認為系統變量值(默認值根據系統而定)
var v_name v_type
  • 零值就是變量沒有做初始化時系統默認設置的值
package mainimport "fmt"func main() {// 聲明一個變量并初始化值var a string = "RUNOOB"fmt.Println(a)// 沒有初始化就是變量類型默認值(int類型默認值為0)var b intfmt.Println(b)// bool零值為falsevar c boolfmt.Println(c)
}
  • 以上實例執行結果為
RUNOOB
0
false
  • 數值類型(包括complex64/128)為0
  • 布爾型為false
  • 字符串為""(空字符串)
  • 以下幾種類型為nil
var a *int
var a []int
var a map[string]int
var a chan int
var a func(string) int
var a error // error 是接口
  • 以下是一個實例
package mainimport "fmt"func main() {var i intvar f float64var b boolvar s string// %v是默認格式動詞,用于打印變量的默認表示形式// %q用于打印帶引號的字符串fmt.Printf("%v,%v,%v,%q\n",i,f,b,s)
}

2.2、第二種聲明方式

  • 根據值自行判定變量類型
var v_name = value
  • 以下是一個實例
package mainimport "fmt"func main() {var a = truevar b = 888var c = 6.6var d = "真幸運"// $T可以獲取變量的類型  \n進行換行fmt.Printf("%T\n",a)  fmt.Printf("%T\n",b)fmt.Printf("%T\n",c)fmt.Printf("%T\n",d)
}
  • 輸出結果如下
bool
int
float64
string

2.3、第三種聲明方式

  • 如果變量已經使用var聲明過了,再使用:=聲明變量,就會產生編譯錯誤,格式如下
vname := value
  • 以下是一個錯誤示范
var intVal int
intVal := 1  // 這時候會產生編譯錯誤,因為intVal已經聲明,不需要重新聲明
  • 直接使用下面的語句即可:
intval := 1  // 此不會產生編譯錯誤,因為有聲明的新變量,因為 := 是一個聲明語句
  • intVal := 1就相當于
var intVal int = 1
  • 可以將var f string = "Runoob"簡寫為 f := "Runoob"
package mainimport "fmt"func main() {f := "Runoob"  // 相當于 var f string = "Runoob"fmt.Println(f)}
  • 輸出結果如下
Runoob

2.4、多變量聲明

// 類型相同的多個變量,非全局變量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3var vname1, vname2, vname3 := v1, v2, v3  // 和 Python 很像,不需要顯示聲明類型,自動推斷vname1, vname2, vname3 := v1, v2, v3  //出現在 := 左側的變量就不應該是已經被聲明過的,否則會導致編譯錯誤// 這種因式分解關鍵字的寫法一般用于聲明全局變量
var (vname1 v_type1vname2 v_type2
)
  • 以下是一個實例
package mainimport "fmt"var x, y int
var (a intb bool
)var c, d int = 1, 2
var e, f = 123, "hello"// 這種不帶聲明格式的只能在函數體中出現
// g, h := 123, "hello"
func main() {g, h := 123, "hello"fmt.Println(x,y,a,b,c,d,e,f,g,h)}
  • 以上實例執行結果為
0 0 0 false 1 2 123 hello 123 hello

2.5、打印變量占用字節

package mainimport ("fmt""unsafe"
)func main() {var name string = "小美"fmt.Println(unsafe.Sizeof(name))
}
  • 以上實例執行結果為
16   // 占用16個字節

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90288.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt WebEngine Widgets的使用

一、Qt WebEngine基本概念Qt WebEngine中主要分為三個模塊:Qt WebEngine Widgets模塊,主要用于創建基于C Widgets部件的Web程序;Qt WebEngine模塊用來創建基于Qt Quick的Web程序;Qt WebEngine Core模塊用來與Chromeium交互。網頁玄…

【C++】標準模板庫(STL)—— 學習算法的利器

【C】標準模板庫(STL)—— 學習算法的利器學習 STL 需要注意的幾點及 STL 簡介一、什么是 STL?二、學習 STL 前的先修知識三、STL 常見容器特點對比四、學習 STL 的關鍵注意點五、STL 學習路線建議六、總結七、下一章 vector容器快速上手學習…

YOLO算法演進綜述:從YOLOv1到YOLOv13的技術突破與應用實踐,一文掌握YOLO家族全部算法!

引言:介紹目標檢測技術背景和YOLO算法的演進意義。YOLO算法發展歷程:使用階段劃分方式系統梳理各代YOLO的技術演進,包含早期奠基、效率優化、注意力機制和高階建模四個階段。YOLOv13的核心技術創新:詳細解析HyperACE機制、FullPAD…

快速將前端得依賴打為tar包(yarn.lock版本)并且推送至nexus私有依賴倉庫(筆記)

第一步創建js文件 文件名為downloadNpmPackage.jsprocess.env.NODE_TLS_REJECT_UNAUTHORIZED "0";const fs require("fs"); const path require("path"); const request require("request");// 設置依賴目錄 const downUrl "…

Unity VS Unreal Engine ,“電影像游戲的時代” 新手如何抉擇引擎?(結)

Unity VS Unreal Engine ,“電影像游戲的時代” 新手如何抉擇引擎?(1)-CSDN博客 這是我的上一篇文章,如果你仍然困惑選擇引擎的事情,我們不妨從別的方面看看 注意:我們可能使用"UE5"來表示Unreal Engine系…

EVAL長度限制突破方法

EVAL長度限制突破方法 <?php $param $_REQUEST[param]; If (strlen($param) < 17 && stripos($param, eval) false && stripos($param, assert) false) //長度小于17&#xff0c;沒有eval和assert關鍵字 {eval($param); } //stripos — 查找字符串…

Linux部署.net Core 環境

我的環境 直接下載安裝就可以了 wget https://builds.dotnet.microsoft.com/dotnet/Sdk/8.0.315/dotnet-sdk-8.0.315-linux-x64.tar.gzmkdir -p $HOME/dotnet && tar zxf dotnet-sdk-8.0.315-linux-x64.tar.gz -C $HOME/dotnet export DOTNET_ROOT$HOME/dotnet expor…

ARM-定時器-PWM通道輸出

學習內容需求點亮4個燈&#xff0c;采用pwm的方式。定時器通道引腳AFLED序號T3CH0PD12AF2LED5CH1PD13AF2LED6CH2PD14AF2LED7CH3PD15AF2LED8實現LED5, LED6, LED7, LED8呼吸燈效果通用定時器多通道點亮T3定時器下的多個通道的燈。開發流程添加Timer依賴初始化PWM相關GPIO初始化P…

javaSE(List集合ArrayList實現類與LinkedList實現類)day15

目錄 List集合&#xff1a; 1、ArrayList類&#xff1a; &#xff08;1&#xff09;數據結構&#xff1a; &#xff08;2&#xff09;擴容機制 &#xff08;3&#xff09;ArrayList的初始化&#xff1a; &#xff08;4&#xff09;ArrayList的添加元素方法 &#xff08;5…

解決 WSL 中無法訪問 registry-1.docker.io/v2/,無法用 docker 拉取 image

文章目錄無法拉取docker鏡像補充遷移 WSL 位置Install Docker無法拉取docker鏡像 docker run hello-world Unable to find image hello-world:latest locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline excee…

【C++】簡單學——list類

模擬實現之前需要了解的概念帶頭雙向鏈表&#xff08;double-linked&#xff09;&#xff0c;允許在任何位置進行插入區別相比vector和string&#xff0c;多了這個已經沒有下標[ ]了&#xff0c;因為迭代器其實才是主流&#xff08;要包頭文件<list>&#xff09;方法構造…

Qt 國際化與本地化完整解決方案

在全球化的今天&#xff0c;軟件支持多語言和本地化&#xff08;Internationalization & Localization&#xff0c;簡稱i18n & l10n&#xff09;已成為基本需求。Qt提供了一套完整的解決方案&#xff0c;幫助開發者輕松實現應用程序的國際化支持。本文將從原理到實踐&a…

MNIST 手寫數字識別模型分析

功能概述 這段代碼實現了一個基于TensorFlow和Keras的MNIST手寫數字識別模型。主要功能包括&#xff1a; 加載并預處理MNIST數據集構建一個簡單的全連接神經網絡模型訓練模型并評估其性能使用訓練好的模型進行預測保存和加載模型 代碼解析 1. 導入必要的庫 import matplot…

進階系統策略

該策略主要基于價格動態分析,結合多種技術指標和數學計算來生成交易信號。其核心邏輯包括: 1. 價格極值計算:首先,策略計算給定周期(由`Var3`定義)內的最高價和最低價,分別存儲在`Var12`和`Var13`中。這一步驟旨在捕捉價格的短期波動范圍。 2. 相對位置計算:接著,策…

【Linux內核】Linux驅動開發

推薦書籍&#xff1a; 《Linux內核探秘&#xff1a;深入解析文件系統和設備驅動的架構與設計》 知識點 x86的IO地址空間和內存地址空間是獨立的兩套地址空間&#xff0c;并且使用不同的指令訪問。MOV, IN, OUT。內存映射I/O可以將IO映射到內存。ARM等RISC采用統一編編址&#x…

MySQL用戶管理(15)

文章目錄前言一、用戶用戶信息創建用戶修改密碼刪除用戶二、數據庫的權限MySQL中的權限給用戶授權回收權限總結前言 其實與 Linux 操作系統類似&#xff0c;MySQL 中也有 超級用戶 和 普通用戶 之分 如果一個用戶只需要訪問 MySQL 中的某一個數據庫&#xff0c;甚至數據庫中的某…

react19相關問題和解答

目錄 1. react19將ref放在了props中(不再需要 forwardRef),那么是不是可以通過ref獲取子組件的全部變量了? 我的子組件的useImperativeHandle還需要定義嗎? 1.1. ref 在 props 中的本質變化 1.2. 為什么不能訪問全部變量? 2. In HTML,cannot be a descendant of. Thi…

Code Composer Studio:CCS 設置代碼折疊

Code Composer Studio&#xff1a;設置代碼折疊,可以按函數&#xff0c;if, 等把代碼折疊起來。1.2.開啟折疊選項3.開啟后&#xff0c;如果文件已經打開&#xff0c;要關掉重新打開文件就可以開到折疊功能生效。

JMeter groovy 編譯成.jar 文件

groovy 編譯 一、windows 下手動安裝Groovy 下載 Groovy 二進制包 前往官網&#xff1a;https://groovy.apache.org/download.html 下載 Binary release&#xff08; https://groovy.jfrog.io/ui/native/dist-release-local/groovy-zips/apache-groovy-sdk-4.0.27.zip &#xf…

使用maven-shade-plugin解決依賴版本沖突

項目里引入多個版本依賴時&#xff0c;最后只會使用其中一個&#xff0c;一般可以通過排除不使用的依賴處理&#xff0c;但是如果需要同時使用多個版本&#xff0c;可以使用maven-shade-plugin解決。以最典型的poi為例&#xff0c;poi版本兼容性很低&#xff0c;如果出現找不到…