時間有限,簡單記一些常用的,麻煩的不寫了
定義變量:可以連續(xù)定義,也可以單個定義
var a int int類型
var a="ds" 默認string類型
a:="string" :=前面不可以有var
上面三種屬于等價的
連續(xù)定義
var x1,x2,x3 int =1,2,3
name1,name2,name3:="mu","bai","xu"
基本數(shù)據類型
int int16,int32,int64 double float 32,64 complex具體含義百度
循環(huán)
for init;condition;desc/incr{\
}
上面這種和c++的for循環(huán)一樣,只不過沒括號
還有一種類似于while的
for condition{
}
eg: condition:a<b ||a>b
無限循環(huán)
for true{
}
switch:
和c++的主要區(qū)別就是沒有break
type-switch
Type Switch
switch 語句還可以被用于 type-switch 來判斷某個 interface 變量中實際存儲的變量類型。
Type Switch 語法格式如下:
switch x.(type){ case type: statement(s); case type: statement(s); /* 你可以定義任意個數(shù)的case */ default: /* 可選 */ statement(s); }
package main import "fmt"func main() { var x interface{} switch i := x.(type) { case nil: fmt.Printf(" x 的類型 :%T",i) case int: fmt.Printf("x 是 int 型") case float64: fmt.Printf("x 是 float64 型") case func(int) float64: fmt.Printf("x 是 func(int) 型") case bool, string: fmt.Printf("x 是 bool 或 string 型" ) default: fmt.Printf("未知型") } }
select 語句類似于 switch 語句,但是select會隨機執(zhí)行一個可運行的case。如果沒有case可運行,它將阻塞,直到有case可運行。
以下描述了 select 語句的語法:
每個case都必須是一個通信
所有channel表達式都會被求值
所有被發(fā)送的表達式都會被求值
如果任意某個通信可以進行,它就執(zhí)行;其他被忽略。
如果有多個case都可以運行,Select會隨機公平地選出一個執(zhí)行。其他不會執(zhí)行。
否則:如果有default子句,則執(zhí)行該語句。
如果沒有default字句,select將阻塞,直到某個通信可以運行;Go不會重新對channel或值進行求值
條件:
break,contonie,goto都是和c/里面的類似
function:
函數(shù)的返回值可以有一個二兩或者多個,中間用逗號隔開就可以,return x,y,z
return的值接的時候就是
func function(a,b,c int) int{
return a,b,c
}
x,y,z=function(a,b,c)
package main import "fmt"func max(a,b int) int{ var result int if a>b{ result=a }else{ result=b } return result } func main(){ var re int re=max(14,6) fmt.Println(re) }
函數(shù)可以作為值
getSquareRoot := func(x float64) float64 { return math.Sqrt(x) } /* 使用函數(shù) */ fmt.Println(getSquareRoot(9))
內置方法
get() len()都屬于circle的內置方法
package main import ( "fmt") type circle struct{ x,y int} func main(){ var c circle c.x=4 c.y=51 var ret int ret=c.get() fmt.Println(ret) ret=c.len() fmt.Println(ret) } func (c circle) len() int { return c.x+c.y } func (c circle) get() int{ return c.x * c.y }
range:
package main import "fmt"func main() { //這是我們使用range去求一個slice的和。使用數(shù)組跟這個很類似 nums := []int{2, 3, 4} sum := 0 for i, num := range nums { fmt.Println(i) sum += num } fmt.Println("sum:", sum) //在數(shù)組上使用range將傳入index和值兩個變量。 //上面那個例子我們不需要使用該元素的序號, //所以我們使用空白符"_"省略了。有時侯我們確實需要知道它的索引。 for i, num := range nums { if num == 3 { fmt.Println("index:", i) } } //range也可以用在map的鍵值對上。 kvs := map[int]string{1: "apple", 2: "banana"} for k, v := range kvs { fmt.Printf("%d -> %s\n", k, v) } //range也可以用來枚舉Unicode字符串。第一個參數(shù)是字符的索引,第二個是字符(Unicode的值)本身。 for i, c := range "go" { fmt.Println(i, c) } }
map
使用range map的時候可以返回兩個值,第一個key第二個value
package main import "fmt"func main() { var Map map[string]string /* 創(chuàng)建集合 */ Map = make(map[string]string) Map["France"] = "Paris" Map["Italy"] = "Rome" Map["Japan"] = "Tokyo" Map["India"] = "New Delhi" for country ,value:= range Map { fmt.Println(country,value) } captial, ok := Map["United States"] /* 如果 ok 是 true, 則存在,否則不存在 */ if(ok){ fmt.Println("Capital of United States is", captial) }else { fmt.Println("Capital of United States is not present") } }
delete(map,"France");
通過delete我們可以刪除指定map的key的value
http://www.cnblogs.com/13224ACMer/p/7026473.html