GO語言基礎教程:數據類型,變量,常量
GO類似PHP,每行的結尾要加分號來結束,不同點在於GO對此並不強制,這一點又像javascript,另外GO的語句塊是用一對大括號來包裹的,但是go要求左大括號必須要在語句的結尾處,不能在行首出現左大括號,這是一個新的特性,至少在我接觸的編程語言中第一次遇到這種狀況.還有就是GO對大小寫敏感,這一點相信大家不會有什麽爭議.
GO語言的註釋方法和PHP是相同的,單行註釋用//,而多行註釋用/*註釋內容*/,這一點是沒差別的.
Go有眾所周知的數據類型int,這個類型很特殊,他會自動根據您的硬件決定適當的長度,在32位的硬件上他的長度是32位,在64位的硬件上,他的長度就是64位,當然了,您也可以強制定義某個變量的長度,例如int8,int16,int32,int64 和 byte,uint8,uint16,uint32,uint64。 注意,這裡的byte是uint8的別稱。
浮點類型分為float32 和 float64
布爾類型由預定義的常量true和false來表示,定義方法為: var x bool=true;
Go原生支持複數,變量類型是complex128;complex64;complex32
另外還有幾個特殊類型,分別是error和uintptr,這個以後再來詳細討論
記得千萬不要混用這些類型,混用會導致出錯,看下邊的代碼:
package main
func main() {
var a int
var b int32
a = 15
b = a + a
b = b + 5
}
這段代碼因為混用了數據類型,因此在編譯的時候會出錯,如果想讓他不出錯必須要用顯式數據轉換才行,以後會討論這個部份.
GO語言變量定義有很多種寫法,其實概括起來應該只有兩種而已,第一種方式是:
var 變量名 類型 = 初始值
例如:
var a int = 123
也可以省略類型
var a=123
這種方法主要是用來定義全局變量,其實有此可以延伸出很多種不同的寫法,例如
var(
a int
b bool
c,d string = "abc","ff"
)
對於這些寫法,其實只要會用一種就可以了,其他的不同寫法只要能認識他是做什麽事情就够了,沒必要每個都死記硬背.
上邊說的是第一種定義方式,其實還有另外一種更為簡潔的定義方式,但是這種定義方式只能用到函數內部,其寫法如下:
a := 123
a, b := 20, 16
_, b := 34, 35
在Go語言中有一個很特殊的變量,那就是系統預設的_,所有賦值給這個變量的值都會被自動丟棄掉,這是因為go語言不允許定義了變量卻不使用,一旦遇到這種定義了變量卻用不到的情況時,可以賦值給_即可.
從上一節課我們瞭解到import進來的包如果沒有使用到會出錯,這節課我們又瞭解到定義了的變量如果沒有用到也會出錯,有此可見GO語言的用心了,我覺得這兩個特性是非常棒的.它強制要求程序員寫嚴謹的程序,這一點讓我欣喜不已.
變量定義就只有這麼多東西,只要把握一點就行了,那就是function之外如果要定義變量就只能用var來定義,不能用 := 這種縮寫形式,因為 := 只能用到function內部.
常量定義和變量定義幾乎沒差別,只是把var這個關鍵字換成了const罷了,另外多了一個枚舉類型 iota 看下邊的例子:
const (
a = iota
b = iota
)
當我第一次給a賦值的時候a的值是0,當我第二次給b複製的時候b的值是1
在此我特別說明一下string類型,這個類型是GO語言內置的類型,但是他和PHP是很不同的,因為在GO語言里string一旦賦值之後是不能更改的.
看範例:
var s string = "hello"
s[0] = 'c'
這麼做是不被允許的,另外string類型必須要用雙引號,而不能用單引號,因為單引號表示的是一個字符而非字符串,但是你卻可以給字符串用反引號,也就是我們在寫mysql語句的時候用的那個反引號,例如 SELECT * FROM `user` WHERE ...
那如果我要修改string怎麼辦呢,看下邊的代碼:
在 Go 中实现这个,需要下面的方法:
s := "hello" //給變量s賦值,類型是string
c := []rune(s) //把字符串s轉換成字符型的數組,rune是int32的別名
c[0] = 'c' //修改數組中的第一個元素的值
s2 := string(c) //把數組型的變量c轉換成字符串並重新賦值給s2這個變量
fmt.Printf("%s\n", s2) //輸出
有點麻煩,至少比PHP麻煩得多.
s := "這是" +
"字符串串接"
s := `其實
還可以這樣寫,但是這樣寫會多出一個換行符
除了上邊說的這些注意事項之外,另外GO有一些保留字是不可以用的,如下:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
for import return var continue
通過這篇文章不難發現,GO的類型其實不多,但功能卻並不弱,因為GO可以自定義類型,在這裡順便一提,在以後的文章里會有詳細說明.另外GO定義變量或常量的方法比較靈活,有很多種寫法,定義常量的時候要注意枚舉類型,定義變量的時候注意字符串這個很特別的類型即可,這就是所有的要點了.
希望轉載文章的朋友能夠留一個文章出處,http://see7di.cnblogs.com 在此感激不盡!
剛成立了一個QQ群,有興趣討論GO語言的朋友可以加入:195112
GO語言基礎教程:數據類型,變量,常量的更多相关文章
- GO語言基礎教程:數組,切片,map
這節課我們來講解數組,切片和map,或許您是從其他語言轉到GO語言這邊的,那麼在其他語言的影響下您可能會不太適應GO語言的數組,因為GO語言把數組給拆分成了array,slice和map,接下來的時間 ...
- Python 基礎 - bytes數據類型
三元運算 什麼是三元運算?請看下圖說明 透過上圖說明後,可以得出一個三元運算公式: result = 值1 if 條件 else 值2, 如果鯈件為真: result = 值1 如果鯈件為假: res ...
- GO語言基礎教程:流程控制
在開始一個新的章節之前先來回顧上一篇文章的部份,首先我們來看這段代碼: package main import ( "fmt" ) func main(){ var x,y int ...
- GO語言基礎教程:序章
首先自我介紹一下我自己,我是一個coder,目前主要從事B/S程序開發工作,懂點PHP;ASP;JSP;JS;VB;C;DELPHI;JAVA,另外知道幾個數據庫,除此之外別無所長,那麼我為何會選擇學 ...
- GO語言基礎教程:Hello world!
首先簡單地說一下GO語言的環境安裝,從 http://golang.org/dl/ 針對自己的操作系統選擇合適的安裝包,然後下載安裝即可,下載的時候注意別選錯了的操作系統,例如go1.3.1.darw ...
- Python 基礎 - 數據類型
標準數據類型 Python3 中有六個標準的數據類型 1 Number(數字) 2 String(字符串) 3 List (列表) 4 Tuple (元組) 5 Sets (集合) 6 Diction ...
- js數據類型
js的數據類型有:字符串.數字.布爾型.數組.undfined.null: js擁有動態類型,同樣的變量可以賦值多個類型: 變量賦值可以聲明后賦值,或者聲明時賦值: 字符串: 字符串用單引號或者雙引號 ...
- GO語言視頻教程下載
需要的朋友可以加QQ群195112,在群共享內可以下載到.
- GO語言視頻教程
第1课:https://github.com/Unknwon/go-fundamental-programming/blob/master/lectures/lecture1.md Go开发环境搭建h ...
随机推荐
- 問題排查:System.BadImageFormatException: 未能加载文件或程序集“System.ServiceModel
錯誤訊息如下: System.BadImageFormatException: 未能加载文件或程序集“System.ServiceModel, Version=3.0.0.0, Culture=neu ...
- 自动化测试工具QTP和SilkTest横向PK(转)
转自:http://www.uml.org.cn/Test/201405212.asp?artid=1686 众所周知,自动化测试工具曾几何时三足鼎立,Mercury QTP/WinRunner系.I ...
- UICollectionCell可移动的逻辑
- 『BASH』——文件权限批量恢复脚本——「Permission Revovery」
一.恢复指定程序包所有文件的权限: #!/bin/bash #Assume that you have mounted a correct orignal-system on /mnt read -p ...
- Browser设置UA值
SWE Browser中的OptionMenu是Controller通过onKeyDown监听KEYCODE_MENU来显示的 public boolean onKeyDown(int keyCode ...
- jquery checkbox选中、改变状态、change和click事件
jquery判断checked的三种方法:.attr('checked); //看版本1.6+返回:”checked”或”undefined” ;1.5-返回:true或false.prop('che ...
- (转)深入理解PHP之数组(遍历顺序)
深入理解PHP之数组(遍历顺序)(转) http://www.laruence.com/2009/08/23/1065.html (鸟哥) 经常会有人问我, PHP的数组, 如果用foreach来访问 ...
- hdu 1231
最大连续子序列 Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Statu ...
- nodejs: C++扩展
Nodejs的C++扩展首先保证nodejs和v8都正确安装 下载NodeJS源码,我的放在D盘. NodeJS的C++扩展要用VS2010开发,新建一个空的Win32控制台项目,右键——属性,在常规 ...
- 在Openfire中使用自己的数据表之修改配置文件
目前我使用的Openfire版本是3.10.3,以下使用说明也是在这个版本上做的修改. Openfire提供了两种方式使用用户数据表.一种是安装完成之后默认实现的org.jivesoftware.op ...