go语言初记
快速了解 http://go-tour-zh.appspot.com/welcome/1 (可以需要爬墻)
下面記錄下了解go的過程,特別記錄下與你腦子里原有“觀念”不同的地方:
1.? 聲名 初始化,類型在后面,不一樣
var a, b int var a,b =1,2var c, python, java = true, false, "no!"a,b:=func fname(string,string) //非聲明,必須在func使用
短聲明變量
在函數中,`:=` 簡潔賦值語句在明確類型的地方,可以用于替代?var?定義。
函數外的每個語法塊都必須以關鍵字開始(`var`、`func`、等等),`:=` 結構不能使用在函數外。
?
2.函數返回多個值
func swap(x, y string) (string, string) { //x, y string 等價 x sring ,y string return y, x}
命名返回值
func swap(string, string) (x, y string) { #返回值分別命名為x,yx= x+12
y= y+1
return
} // 空return實際返回的是x,y
3.對于聲明了但沒使用的變量,引入但沒有使用的包,會引發錯誤, ?go可以自動格式化源碼 ?
func 函數體的第一個'{'必須在同一行(?試了不在一行格式不行,運行出錯)
?
4.包
每個 Go 程序都是由包組成的。
程序運行的入口是包 `main`。
package mainimport ("fmt""math/rand" )func main() {fmt.Println("My favorite number is", rand.Intn(10)) //先不管rand.Intn干什么的,按照慣例,包名與導入路徑的最后一個目錄一致。例如,`"math/rand"` 包由?package rand?語句開始 }?
注意:導出名
在導入了一個包之后,就可以用其導出的名稱來調用它。
在 Go 中,首字母大寫的名稱是被導出的。(算是一種慣例/約定,如python里_function _varname是私有一樣)?
package mainimport ("fmt""math" )func main() {fmt.Println(math.pi) }Foo?和?FOO?都是被導出的名稱。名稱?foo?是不會被導出的 ,所以math.pi肯定不存在,可能Pi是存在的
5.基本類型
Go 的基本類型有Basic types
boolstringint int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptrbyte // uint8 的別名rune // int32 的別名 // 代表一個Unicode碼float32 float64complex64 complex128package mainimport ("fmt""math/cmplx" )var ( //這樣用很特別ToBe bool = falseMaxInt uint64 = 1<<64 - 1z complex128 = cmplx.Sqrt(-5 + 12i) )func main() {const f = "%T(%v)\n"fmt.Printf(f, ToBe, ToBe) //bool(false)
fmt.Printf(f, MaxInt, MaxInt) //uint64(18446744073709551615)
fmt.Printf(f, z, z) //complex128((2+3i)) 不懂
}
?
6.類型轉換 不同類型間轉換需要顯式進行,即使從int往int64轉也得顯式 (c是可以隱式轉換的,溢出不提示)
?
7.循環只有for ,沒有 while ,通過省略for的首尾式可以做到while一樣的事 :for i < 10 {} ??
?
轉載于:https://www.cnblogs.com/haanico/p/3845129.html
總結
- 上一篇: javascript深入理解js闭包[转
- 下一篇: 常用js代码整理、收集