golang筆記02 golang基礎語法

2021-10-19 09:27:26 字數 3921 閱讀 3772

3 注意事項

4 說明

本文繼上文 golang筆記01–golang基礎配置, 進一步了解 golang 基礎語法和相應注意事項。

具體包括 : 變數定義 ,內建變數型別,常量與列舉,條件語句,迴圈,函式,指標 等基礎語法。

變數要點:

1)變數型別寫在變數名後面

2)編譯器可以推測變數型別

3)沒有char,只有rune(32位)

4)原生支援複數型別

package main

import

"fmt"

// 包內部的變數,而非全域性變數

var(

aa =

3 bb =

4 cc =

"cc"

)func

variablezerovalue()

func

variableinitvalue()

func

variabletypededuction()

func

variableshorter()

func

main()

輸出:hello world0""

34 abc34

true def35

true def

34 cc

常見型別包括:

bool, string

int int8, int16, int32, int64, uintptr

byte, rune(go 的字元型別)

float32 float64 complex64(複數) complex128

強制型別轉換,go沒有隱式轉換

package main

import

("fmt"

"math"

"math/cmplx"

)func

euler()

func

********()

func

main()

輸出:chapter2.

2euler5(

0.000000

+0.000000i

)********

5

常量:通過 const 來定義

列舉:通過一組const來定義列舉

package main

import

"fmt"

func

consts()

func

enums()

func

main()

輸出:test.txt 345

6true01

2012

11024

1048576

1073741824

1099511627776

1125899906842624

go 中的條件語句主要包括if, else, switch;

if 後面的條件沒有括號;

if 條件裡面也可以定義變數;

switch 不需要break,也可以直接switch多個條件;

package main

import

("fmt"

"io/ioutil"

)func

bounded

(v int

)int

else

if v <

0else

}func

readfile()

else

}func

calculator

(a, b int

, op string

)int

return result

}func

main()

golang 中通過 for 實現迴圈,沒有while;

for 後面的條件沒有括號;

package main

import

("bufio"

"fmt"

"os"

"strconv"

"time"

)func

convert2bin

(n int

)string

return result

}func

printfile

(filename string

) scanner := bufio.

newscanner

(file)

for scanner.

scan()

}func

forever()

}func

main()

輸出:101

1101

line 001

line 002

abcabc

......

函式語法要點:

1)返回值型別寫在最後面

2)可以返回多個值

3)函式作為引數

4)沒有預設引數,可選引數

package main

import

("fmt"

"math"

"reflect"

"runtime"

)func

eval

(a, b int

, op string)(

int,

error)}

func

div(a, b int

)(q, r int

)func

pow(a, b int

)int

func

sum(numbers ...

int)

intreturn s

}func

(op func

(int

,int

)int

, a, b int

)int

func

main()

,2,4

))fmt.

println

(sum(1

,2,3

,4))

}輸出:

0 unsupported operator:%!

s(missing)x

3<

nil>31

calling function main.pow with args (3,

4)81calling function main.main.func1 with args (2,

4)1610

go 語言函式使用值傳遞,但使用指標引數可以實現引用的功能;

package main

import

"fmt"

func

swap

(a, b int

)func

swap_ptr

(a, b *

int)

func

main()

輸出:chapter 2.734

43

如何處理float 轉 int 4.9999 轉換為 4 的情況
var a float32

=4.999999

fmt.

println

(int

(a))

可以使用 decimal 包 來解決精度丟失問題

軟體環境

go版本:go1.15.8

作業系統:ubuntu 20.04 desktop

idea:2020.01.04

參考文件

由淺入深掌握go語言–慕課網

go 語言程式設計–許式偉

golang學習筆記 優雅的退出golang服務

寫了一段時間的golang後台,怎麼優雅的退出程式一直是乙個很模糊的問題。思路還是之前的思路,各種標誌和變數來回控制,雖然說是能夠滿足需求,但是總感覺那開啟的姿勢不對,下面對優雅的退出golang做乙個小總結,廢話不多說,直接上 主程式 模擬乙個服務物件,函式reload和close分別是過載和退出...

golang學習筆記 優雅的退出golang服務2

前不久介紹了如何比較 優雅的退出golang服務 雖然能夠優雅的退出,但是只是簡單的監聽了系統的訊號,後續服務模組得到資源釋放又牽扯到更多的邏輯。對於服務啟動的子協程的宣告週期顯然沒有考慮到。經過一些時間的實踐和閱讀大佬們的 對如何優雅的退出golang服務再做乙個簡單的記錄。乙個供外部呼叫的釋放資...

golang學習筆記4函式02引數

go對引數的處理偏向保守 變參 本質上是乙個切片,只能接受一到多個同型別引數,必須放在列表尾部func test s string,a int func main 將切片作為變參時,需進行展開操作,如果是陣列,先將其轉換成切片func test s string,a int func main te...