0
false
"」
golang 中不一樣類型之間的變量賦值須要顯式的轉換golang
//語法格式 T(v) 將 v 轉換爲 類型 T var i int = 32 var f float64 = float64(i) var u uint = uint(64)
使用 var 聲明
不管在函數內仍是函數外,均可以使用 var 聲明變量ide
基本語法格式爲:
var varName varType
var varName = varValue
var varName1, varName2 varType
var varName1, varName2 = varValue1, varValue2函數在基本語法格式上能夠進行一些靈活組合,可是建議不要用花哨的語法ui
//聲明可是不初始化(foo 的值爲對應變量類型的零值) var foo int; //聲明且初始化(var聲明初始化的時候不須要指定變量類型,編譯器自動根據初始化值肯定變量類型) var bar = 3 //推薦寫法 var bar int = 3 //合法可是不推薦 //聲明 i1, i2 爲 int 類型(初始值爲 int 類型的零值 0) var i1, i2 int //聲明 i1 和 i2同時賦值爲1,2 var i1, i2 = 1, 2 //聲明 int 類型的 i1,string 類型的 s1 var i1, s1 = 1, "a" //聲明一組全局變量,變量能夠初始化或者不初始化 var( i1, i2 = 1, 2 i3, i4 int s1 = "111221" b1 = true )
快捷語法
只能在函數體內使用快捷語法,函數體外非法編碼
語法格式
varName1 := varValue1操作系統
func main(){ //聲明變量 i1而且同時給變量賦值 i1 := 1 //聲明變量 i2,s1而且同時給他們賦值 i2, s1 := 1, "11" }
var聲明和快捷語法聲明須要注意的地方code
便捷聲明方法是聲明一個新的變量且賦值,不能用做給 var 聲明的變量賦值對象
var foo = 1 func main(){ foo := 10 //輸出10 使用的局部變量取值 fmt.Println(foo) //PS: 必定要注意下面有語法錯誤 var bar int bar := 11 //便捷方式實際上是先聲明一個新變量而後給賦值,可是此時 bar 變量已經存在了不能重複定義 }
_
變量
_
用來拋棄忽略某個值,golang 中不容許存在沒有使用的變量索引
函數多返回值拋棄字符串
_, r := divide(10, 3)
導入包不使用(可是會調用導入包的 init方法)
import( "fmt" _ "os" )
常量是指變量一旦定義,在編譯階段它的值就是肯定了的,在運行階段是不能夠被改變的,golang 中 number|boolean|string 類型能夠定義爲常量
定義語法
const constantName = value
cosnt constantName constantType = value
const PI = 3.14 const Pi float32 = 3.14156
golang 中的 基本變量類型主要爲 number,bool,string等
關鍵詞 bool
用於定義 boolean類型變量,boolean 類型變量的取值只有 true
和 false
, 零值(默認值)爲 false
golang 不容許把 boolean 類型轉變爲數字類型
golang 不容許類型不一樣的變量進行運算,例如 int8類型的變量和 int32類型的變量不能進行加法操做
signed
unsigned
注意沒有 float 這個類型
goalng 使用 UTF-8做爲編碼結合,使用 " 或者 ` 包裹起來的字符就是一個 string
` 定義多行字符串
var s1 = "hello" var s2 = `hello word`
string 對象不容許改變值(可是能夠給從新賦值),下面的語法錯誤
var s = "hello" s[0] = 'c'
若是要改變一個變量的值,須要使用舊的變量建立
s := "heloo" c := byte(s) //string 轉換爲[]byte 類型 c[0] = 'c' s2 := string(c) //把 c []byte 轉爲 string fmt.Printf("%s\s\n", s2)
+
能夠用來拼接兩個字符串
s := "hello, " m := "world" a := s + m fmt.Printf("%s\n", a) //輸出 "cello, " s = "c" + s[1:] //返回 "c" + s從索引1到結束的字符串拼接
golang沒有 try-catch 語句塊處理異常,內置了 error 類型用於處理錯誤
err := errors.New("some error messaage") if err != nil { //TODO something }
分組定義
若是你想定義多個常量,變量或者導入多個包,可使用分組格式
//如下是非分組形式 import "fmt" import "os" const i = 100 const pi = 3.145 var i int var pi float32 var prefix string //分組形式 import( "fmt" "os" ) const( pi = 3.145 prefix = "GO" ) var( pi float32 prefix string )
iota 枚舉
關鍵字 iota 能夠生成枚舉類型,枚舉值從0開始,每次加1
const( //x == 0 x = iota //y == 1 y = iota //z == 2 z = iota //若是常量名稱後面沒有任何表達式 //則 w 等價於 w = iota, w == 3 w ) const v = iota //v == 0 //PS 注意在同一行時的 iota 特殊狀況 const( //若是 iota 在同一行,則 e == f == g == 0 e, f, g = iota, iota, iota )
變量的可見性
package test //Foo 在包 test 以外能夠經過 test.Foo 訪問 var Foo //bar 在包 test 以外經過 test.bar 訪問是錯誤的,由於它的首字母是小寫,包外不可見 var bar //函數在test 包外可使用 test.Test1()訪問 func Test1(){ } //函數在 test 包外不能夠經過 test.test2()訪問,只能夠在包內使用 func test2(){ } //包外使用 test.I訪問 Const I = 1 // j 不能夠在包外經過 test.j 訪問 cont j = 10