GO語言函數與封裝(package,function) 學習總結教程

來源:互聯網
上載者:User

1. package import和export

GO語言中package用於封裝一個相對獨立的功能提供給外部使用。package有如下特徵
1.1 package會對應一個目錄

    這點與Java類似

1.2 package中的原始碼存放目錄是package最後一個/結束的准,如package math/rand,那麼所原始碼都在rand目錄下
1.3 main是一個特殊的package名字,類似Java的main函數,GO的可執行程式必須在main package下
1.4 package中的原始碼存放目錄是package最後一個/結束的准,如package math/rand,那麼所原始碼都在rand目錄下
1.5 原始碼檔案中,以大寫字母開頭的函數才會被匯出(外部存取)。這點類似Java和存取權限控制,只是太隱晦了。

    但是比Python的約定底線(_)開頭的函數是內建函式但是外部還是可以訪問有進步一些。

1.6 import package兩種形式

import "fmt"
    import "math/rand"

import(
      "fmt"
      "mat/rand"
    )

2. function

2.1 函數申明可以沒有參數,但是函數申明最末尾必須要有括弧

    這點不像Ruby那麼靈活,函數申明和調用都可以省略到括弧。 Python在某個版本中也可以省略,但是後來發現代碼風格不統一,所以在Python3.0裡面肯定不支援不帶括弧的函數申明和調用了。

package main

import "fmt"

func main() {
    fmt.Println(add(42, 13))
}

2.2 函數的參數和傳回值類型,都是寫在最後

    這點與Java,C完全是反的,所以也好記。當然也沒有什麼對與錯,習慣就好了。

package main

import "fmt"

func add(x int, y int) int {
    return x + y
}

2.3 參數類型如果相同,前面類型申明可以省略,只在最後定義前面所有變數類型

package main

import "fmt"

func add(int, y int) int {
    return x + y
}

2.4 可以返回多個值

    這個是進階語言必須的。Java,C這種不支援多傳回型別的,當通過返回數組來替代時,然後通過index取數組的值又是魔鬼數字,這時候真抓狂!

package main

import "fmt"

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
    a, b := swap("hello", "world")
    fmt.Println(a, b)
}

2.5 函數體內的變數可以通過在函數申明中作為函數傳回值

package main

import "fmt"

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return
}

func main() {
    fmt.Println(split(17))
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.