網站首頁 編程語言 正文
一、變量相關
1.變量聲明
C# : int a;
Go : var a int; 需要在前面加一個var關鍵字,后面定義類型
可以使用 var( a int; b string;)減少var
2.變量初始化
var a int = 10 // 正確的使用方式1 var a = 10 // 正確的使用方式2,編譯器可以自動推導出v2的類型 a := 10 // 正確的使用方式3,編譯器可以自動推導出v3的類型
在:=左側的變量不應該是已經被聲明過的
3.變量賦值
注意:Go語言的新特性 “Simultaneous Assignment” (平行賦值、多重賦值 ......)
a,b = b,a 可以方便的交換兩個數的值,之前的其他語言可能都需要加一個temp變量
對于這個我其實是有疑問的,就是Go語言是如何實現該功能的?按照我的想法如果是go語言底層也是按照加入一個變量的方式,那么豈不是輸出的a和b都是b的值了?達不到交換的目的。
大概結論就是,這個賦值操作可以看成一個原子操作。
4.匿名變量
Go可以定義匿名變量來減少不需要的代碼,例如,我只關心Value,不想打印Key的時候可以用“_”代替變量。同理對于有多個返回值的方法,可以用“_”代替我不想要的返回值,這樣就減少了變量的定義。
func main(){ x:=make(map[string]int16) x["apple"] =100 x["orange"] = 50 x["pear"]=500 for _,value := range x{ fmt.Println(value); } }
二、常量相關
1.字面常量
Go語言的字面常量是無類型的,可以被賦值給任何類型的變量。
例如 AConstNumber 可以賦值給int、float32等類型,但是賦值給string就出錯了
package main import ( "fmt") func main(){ const AConstNumber = -100 var x int = AConstNumber var y float32 = AConstNumber fmt.Println("x:",x) fmt.Println("y:",y) }
2.預定義常量
Go語言預定義了這些常量:true、false和iota。
iota是個什么玩意?
iota比較特殊,可以被認為是一個可被編譯器修改的常量,在每一個const關鍵字出現時被 重置為0,然后在下一個const出現之前,每出現一次iota,其所代表的數字會自動增1。 (一個計數器?)
例如:
func main(){ const( a = iota *100 b = iota *100 c = iota *100 ) const( d = iota *100 e = iota *100 f = iota *100 ) fmt.Println(a) // 打印 0 fmt.Println(b) // 打印 100 fmt.Println(c) // 打印 200 fmt.Println(d) // 打印 0 fmt.Println(e) // 打印 100 fmt.Println(f) // 打印 200 }
所以 iota 這個東西用好了就能當枚舉使用了,正好Go語言不支持enum關鍵字
原文鏈接:https://www.cnblogs.com/dcz2015/p/10095969.html
相關推薦
- 2022-09-14 關于Python文本生成的Beam?Search解碼問題_python
- 2022-09-06 Django的restframework接口框架自定義返回數據格式的示例詳解_python
- 2022-02-10 postgresql解決鎖表
- 2024-03-03 layui彈窗編輯表單清空
- 2023-08-28 vscode里面報:‘xxx‘ is assigned a value but never used
- 2023-01-18 淺析Python的對象拷貝和內存布局_python
- 2022-03-09 C#判斷DLL文件是32位還是64位的示例代碼_C#教程
- 2022-11-16 python中內置類型添加屬性問題詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支