send、receive操作是針對channel的
send : ch <- a
receive: a := <- ch
在go中++
和--
是乙個賦值語句,而不是乙個表示式因此不能像c/c++那樣編寫如下**:
a = b++
同時在go中只有後置,沒有前置寫法。
a++
a--
if
if是程式語言中最簡單的條件分支判斷語句,幾乎所有語言都有,所以就不介紹功能,主要介紹下寫法
if
語句中的條件表示式不需要加上括號
if a >0 else
if
的語句中可以在判斷語句中宣告變數,這個變數只在if語句作用域內部有效
if a := calc(); a <0
switch
語句中首先執行switch
後面的表示式,然後執行case
後面的表示式,並且是從上到下,從左到右執行,一旦有乙個滿足,則不再繼續執行後面的操作。
switch
後面不跟表示式則預設為true
case
後面可以跟很多個表示式,其中乙個滿足則執行該case
下的語句
預設情況下case下的語句執行之後會跳出switch
,如果需要繼續執行,使用fallthrough
關鍵字,即使是default
也可以fallthrough
和if
一樣可以在switch
表示式中宣告變數
switch
可以最多有乙個default
,當沒有case條件滿足的情況下執行default
switch tag
switch
switch x := f();
switch
出了支援上述普通的表示式判斷以外,還支援型別switch,這種情況下不能使用fallthrough
type有可能是nil(當變數是乙個nil inte***ce的時候)
switch i := x.(type)
for語句有三種形式:
for
for a < b
for i :=0; i <10; i++
對於陣列、slice、string、map、channel可以是用for range的形式,具體情況如下:
for index, value := range a
b := "中文"
for index, unicode := range a
//輸出
//0 中
//3 文
for key, value := range amap
for k := range ch {}
go語句建立乙個goroutine並在該goroutine中執行函式,可以是乙個匿名函式
go log(i)
gofunc(i int) (1)
select
語句主要用於對channel的選擇,可以是接收或者傳送,當操作成功的時候的時候選擇對應的case,如果有多個case成功,隨機選擇其中乙個執行。
var a int
var c, c1, c2, c3, c4 chan
intvar i1, i2 int
select else
case a[f()] = <-c4:
// same as:
// case t := <-c4
// a[f()] = t
default:
print("no communication\n")
}for
}select {} // block forever
return結束乙個函式,並且可以返回乙個或者多個返回值
func noresult()
func tworesult() (int, bool)
func towresultwithvariabl() (a int, b bool)
break用於跳出最內層的for switch select語句,也可以通過使用label來跳出指定的label標記的for switch select
outer_loop:
for i :=0; i <10; i++
}}
continue
用於直接開始最內層迴圈的下乙個迭代,也可以通過label來繼續label標記的for loop。
rowloop:
for y, row := range rows
row[x] = data + bias(x, y)
}}
和c/c++中的goto一樣,跳轉到指定的label處,goto不能跳過作用域中的變數宣告,也不能跳轉到不同的作用域中去
goto l
v :=3
l: dosomething() //錯誤,跳過了v的宣告
if n%2 ==1
for n >0
//錯誤,從乙個作用域跳轉到另外乙個作用域
defer是乙個函式的執行推遲到其呼叫defer的函式的return之前執行。
多個defer的執行順序是和編寫順序逆序執行的
func dosomething() int
func do() int
for i :=0; i <10; i++
這樣將輸出9
到0
panic將直接從呼叫panic的當前函式中返回,並且如果panic沒有被recover,那麼程式將直接crash。
可以通過defer和recover來從panic錯誤中恢復。
func protect(g func())
}()log.println("start")
g()}
一些特殊功能的SQL語句(特殊SQL)
如今不管是mysql還是oracle,都有很多客戶端軟體方便我們去操作它,mysql有front,sqlyog,oracle有toad,pl sql,但有一些操作還是使用命令方便些,如下所示 mysql中如何檢視當前資料庫中有多少張表?select count tables,table schema...
POS印表機一些特殊控制
procedure tform1.button1click sender tobject varrprinter textfile i integer begin assignfile rprinter,lpt1 rewrite rprinter for i 0 to memo1.lines.cou...
for語句和if語句的一些應用
1.5位運動員參加了10公尺臺跳水比賽,有人讓他們 比賽結果 a選手說 b第二,我第三 b選手說 我第二,e第四 c選手說 我第一,d第二 d選手說 c最後,我第三 e選手說 我第四,a第一 比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。int main system pause re...