# 定義變量
使用var關鍵字是go語言最基本的定義變量方式,與C語言不通的是Go語言把變量放在變量名后面。
~~~
//定義一個"liuxinming"變量,類型為"type"的變量
var liuxinming type
~~~
~~~
//定義多個"type"類型變量
var name1,name2,name3 type
~~~
~~~
//初始化liuxinming的變量為"value"值,類型是"type"
var liuxinming type = value
~~~
~~~
//定義三個類型為"type"的變量,并且初始化
var name1,name2,name3 type = 1,2,3
~~~
~~~
//簡化上面的語句
name1,name2,name3 := 1,2,3
~~~
**說明:**
":="這個符號直接取代了var 和 type,這種形式叫做簡短聲明,不過它有一個限制,它只能用在函數內部(在函數外部使用則會無法編譯通過)。
所以一般用var方式來定義全局變量。
"_" 是一個特殊的變量名,任何賦予它的值都會被丟棄
~~~
_,b = 1,2
//b被賦予2,并同時丟棄1
~~~
Go預約對于已聲明但未使用的變量會在編譯階段報錯,如下

~~~
package main
func main(){
var i int//聲明了i,但未使用
}
~~~
# 常量
在程序編譯階段就確定下來的值,而程序在運行時則無法改變該值,在GO語言中,常量可以定義為數值、布爾值或字符串等類型
~~~
const constantname = value
//如果需要,可以明確指定常量類型
const Pi float32 = 3.1415926
const i = 10000
const MaxThread = 10
const prefix = "astaxie_"
~~~
# Boolean類型
布爾值的類型bool,值為true或false,默認false.
~~~
//實例代碼
var isActvie bool //全局變量聲明
var enabled,disabled = true, false//忽略類型的聲明
func test(){
var available bool //一般聲明
valid := false //簡短聲明
available = true //賦值操作
}
~~~
# 數值類型
### 整數類型:
1、有符合
2、無符號
Go語言同時支持int 和 uint,這兩種類型的長度相同,但具體長度取決于不同編譯器的實現。
Go預約也有直接定義好位數的類型:
rune(int32的別稱)
int8
int16
int32
int64
byte(uint8的別稱)
uint8
unit16
uint32
uint64
注意:這些類型的變量之間不允許互相賦值或操作
~~~
//錯誤代碼
var a int8
var b int32
c := a+ b
~~~
###浮點數的類型:
float32?
float64(默認)
Go語言還支持復數,它默認類型是complex128(64位實數+64位虛數)complex64
復數的形式為RE+IMi,其中RE是實數部分,IM是虛數部分,而最后的i是虛數單位。
~~~
package main
import "fmt"
func main() {
var c complex64 = 5 + 5i
fmt.Printf("Value is : %v", c)
}
~~~

# 字符串
Go語言字符串都是采用UTF-8字符集編碼。字符串是用一對雙引號或反引號(``)括起來定義,它的類型是string。
~~~
//示例代碼
func test(){
userame,realname := "grassroots", "liuxinming" //簡短聲明
username2 := "test"
username2 = "test2" //常規賦值
}
~~~
**在Go語言中字符串是不可變的,下面代碼編譯時會報錯**
~~~
var s string = "hello"
s[0] = 'c'
~~~
可以使用下面代碼實現
~~~
/*
* 字符串示例代碼
*@author lxm
*/
package main
import "fmt"
func main() {
s := "hello"
c := []byte(s) //將字符串 s 轉換為 []byte 類型
s2 := string(c) //再轉換回 string類型
fmt.Printf("%s\n", s2)
}
~~~

Go語言中可以使用“+” 操作符來鏈接兩個字符串。
修改字符串參考如下代碼:
~~~
/*
*修改字符串
*@author lxm
*/
package main
import "fmt"
func main() {
s := "hello"
s = "c" + s[1:] //字符串切片操作
fmt.Printf("%s\n", s)
}
~~~

# 錯誤類型
error類型,用來處理錯誤信息,Go語言的package里面還有專門一個包errors來處理錯誤。
- 前言
- golang學習(一)之安裝
- Go語言學習二:Go基礎(變量、常量、數值類型、字符串、錯誤類型)
- Go語言學習三:Go基礎(iota,array,slice,map,make,new)
- Go語言學習四:struct類型
- Ubuntu 14.04/CentOS 6.5中安裝GO LANG(GO語言)
- Mac OS 安裝golang
- Mac install Thrift
- Thrift RPC 使用指南實戰(附golang&PHP代碼)
- golang net/http包使用
- 冒泡排序Bubble sort-golang
- 快速排序Quick sort - golang
- Go語言學習:Channel是什么?
- Golang的select/非緩沖的Channel實例詳解
- Golang time包的定時器/斷續器
- Golang同步:鎖的使用案例詳解
- Golang同步:條件變量和鎖組合使用
- Golang同步:原子操作使用
- Golang之bytes.buffer
- Golang之字符串格式化
- Golang之反射reflect包
- Go語言配置文件解析器,類似于Windows下的INI文件.