2:GO基礎知識

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport ("fmt")func main() {c()}// 1,變數func test1() {//-----------------------------1.1變數聲明var v1 intvar v2 stringvar v3 [10]int //數組var v4 []int   //數組切片var v5 struct {f int}var v6 *int           //指標var v7 map[string]int //key為string  value為int的mapvar v8 func(a int) int//-----------------------------1.2變數初始化var v9 int = 10var v10 = 10v11 := 10//-----------------------------1.3匿名變數//當調用某函數返回多個值,而你只需要用到某幾個的時候,則其他的變數用“_”來代替_, _, nickName := GetName()}//1.3 匿名變數補充func GetName() (firstName, lastName, nickName string) {return "michael", "ma", "liang"}//二:常量func test2() {//-----------------------------2.1 常量const Pi float64 = 3.14159265358979323846const zero = 0.0 //const (size int64 = 1024eof        = -1 //)const u, v float32 = 0, 3const a, b, c = 3, 4, "foo"//-----------------------------2.2 預訂義常量//true false iota;iota比較特殊,是編譯器可以修改的常量,在每個const出現的時候被重設為0,在下一個const出現之前,每出現一次iota會自增1const ( // iota被重設為0c0 = iota // c0 == 0c1 = iota // c1 == 1c2 = iota // c2 == 2)const (a1 = 1 << iota // a == 1 (iota在每個const開頭每重設為0)b1 = 1 << iota // b == 2c3 = 1 << iota // c == 4)const (u1          = iota * 42 // u == 0v12 float64 = iota * 42 // v == 42.0w           = iota * 42 // w == 84)const x = iota // x == 0 (因為iota又被重設為0了)const y = iota //y==0 同上//-----------------------------2.3枚舉//制定一系列相關的常量,如下const (Sunday = iotaMondayTuesdayWednesdayThursdayFridaySaturdaynumberOfDays)}//三:類型func test3() {//-----------------------------3.1:基礎類型//布爾類型:bool//整型:int8 byte int16 int uint uintptr//浮點類型:float32 float64//複數類型:complex64 complex128//字串:string//字元類型:rune//錯誤類型:error//-----------------------------3.2:複合類型//指標//數組//切片//字典//通道//結構體//介面}//四:流程式控制制func test4() {//-----------------------------4.1選擇switch i {case 0:fmt.Printf("0")case 1:fmt.Printf("1")case 2:fallthroughcase 3:fmt.Printf("3")case 4, 5, 6:fmt.Printf("4, 5, 6")default:fmt.Printf("Default")}switch {case 0 <= Num && Num <= 3:fmt.Printf("0-3")case 4 <= Num && Num <= 6:fmt.Printf("4-6")case 7 <= Num && Num <= 9:fmt.Printf("7-9")}//-----------------------------4.2迴圈sum := 0for i := 0; i < 10; i++ {sum += i}sum2 := 0for {sum2++if sum2 > 100 {break}}//-----------------------------4.3跳轉//滾你妹跳轉it := 0HERE:fmt.Println(i)it++if i < 10 {goto HERE}//-----------------------------4.4條件if a < 5 {return 0} else {return 1}}//五:函數//-----------------------------5.1函數定義//func 函數名 (參數列表)傳回值{函數體  返回語句}//大小寫問題不在贅述func ImAfunc(a int, b int) (ret int, err error) {if a < 0 || b < 0 {err = errors.New("Should be non-negative numbers!")return}return a + b, nil}//-----------------------------5.2函數調用func a() {//就是這麼調用的imafc, err := ImAfunc(1, 2)fmt.Println(imafc, err)}//-----------------------------5.3不定參數類型func myfunc(args ...int) {for _, arg := range args {fmt.Println(arg)}}//調用func b() {myfunc(1, 2, 3, 4, 5, 6, 7)}//-----------------------------5.4多傳回值//詳見ImAfunc函數//-----------------------------5.5匿名函數//執行個體1package mainimport ("fmt")func main() {func(a, b int) (sum int) {sum = a + bfmt.Println(sum)return}(1, 2)//括弧後直接跟參數代表直接調用}//執行個體2package mainimport ("fmt")func main() {nm := func(a, b int) (sum int) {sum = a + bfmt.Println(sum)return}nm(1, 2)}//六:錯誤處理func Foo(param int)(n int, err error) {// ...}//調用方式如下n, err := Foo(0)if err != nil {// 錯誤處理} else {// 使用傳回值}//七:defer//-----------------------------7.1func CopyFile(dst, src string) (w int64, err error) {srcFile, err := os.Open(src) if err != nil {return}defer srcFile.Close()dstFile, err := os.Create(dstName)if err != nil {return}defer dstFile.Close()return io.Copy(dstFile, srcFile)}//-----------------------------7.2//panic()和recover()//我還沒寫完


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.