go語言基礎教程之(包、變量和函數(shù))
包
go程序由一個個不同的包組成,程序的入口是名為main的包,比如我們創(chuàng)建一個main文件
main.go
package main
import "fmt"
func main(){
fmt.Println("hello")
}
go要求每一個go文件的非注釋開頭必須是``` package xxx``,也就是聲明該文件屬于哪個包
導出方式
首先我們創(chuàng)如下包文件夾:
我的項目 ├─mytool │ ├─ alg │ │ ├─ cmp.go │ │ └─ mod.go │ └─ mod.go └─其他文件
這樣,如果我們在main.go里面需要使用cmp.go里面的函數(shù)的話需要添加這樣的語句:
...
import "項目名稱/mytool/alg"
...
alg.Cmp()
...其中兩個語句分別導出了 alg 包,和調用 alg 包下的 cmp 函數(shù)
分組導入
通常情況下,推薦使用分組導入包,也就是這種寫法:
import(
"fmt"
"text/mytool/alg"
)這是不推薦的寫法,寫起來也不方便:
import "fmt"
import "text/mytool/alg"
可導出與不可導出
go的包中支持不可導出函數(shù),就像類中的私有函數(shù),聲明的方式為函數(shù)名首字母是否大小寫
在 cmp.go 文件中添加如下兩個函數(shù):
func action() {
fmt.Println("action")
}
func Move(){
fmt.Printlm("move")
}其中,只有 Move 函數(shù)是可以被調用的,而action函數(shù)由于首字母未大小寫不可調用,因為他沒有被導出
函數(shù)
go 中定義函數(shù)需要使用 func 關鍵字
參數(shù)
go 的函數(shù)可以沒有參數(shù),也可以有多個參數(shù),如下:
func novar(){
}
func manyvar(a int, b int){
}
如果參數(shù)類型一致可以只寫最后一個參數(shù)的類型,如下:
func manyvar(a,b int){
}
返回值
go 函數(shù)如果有返回值需要在參數(shù)后面聲明,如下:
func havereturn() int{
}
它將返回一個 int 類型的返回值
返回值也可以有一個指定的名字,其目的是為了增加代碼的可讀性,如下:
func sum(a, b int) (ans int){
ans = a + b
return ans
}如果一個函數(shù)十分的長,那么在開始就確定返回值的名字將大大增加可讀性
go 支持函數(shù)返回多個返回值,如下:
func manyres() (int, error){
return 1 , nil
}它分別返回了int和error類型兩個返回值
變量
go 中的變量使用 var 關鍵字創(chuàng)建,并且在變量名后加變量類型,如下:
var a int
該代碼創(chuàng)建了一個 int 類型的變量
變量也可以像其他語言一樣通過等于號賦值和初始化,如下:
var a = 1//這叫初始化 //也可以一次初始化多個值 var b, c = false, "AMDYES!" a = 2//這叫賦值
不想寫 var 關鍵字怎么辦,在函數(shù)里面可以這么寫:
func text(){
a := 1//這樣也相當于創(chuàng)建和初始化變量
}函數(shù)外是不允許這么寫的,go 中規(guī)定,函數(shù)外的每個語句必須以關鍵字作為開頭。
go 中如果初始化沒有明確初始值,統(tǒng)一賦值為 go 中默認的零值
go 中的類型轉換方式為 T(變量) ,T代表一種變量類型
如下:
var a int = 1 var b = float64(a)
go 的類型推導會在你聲明變量時不指定變量類型時觸發(fā)。它會根據(jù)右邊表達的結果類型來確定變量的類型,如下:
var a int =1 b := a//b的類型推導為int c := 1//此時c被推導為int,也就是常數(shù)整型在 go 中為 int d := 1.1//此時d被推導為float64 e := 1 + 1i//此時為complex128
go 中的常量聲明通過const關鍵字,如下:
const a int = 1 const b = 1.1//也可以不寫類型讓 go 自動推導
但是要注意的是 := 只能聲明出變量,常量無法用這個來進行聲明
到此這篇關于go語言基礎教程之(包、變量和函數(shù))的文章就介紹到這了,更多相關go語言 包、變量和函數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go?處理大數(shù)組使用?for?range?和?for?循環(huán)的區(qū)別
這篇文章主要介紹了Go處理大數(shù)組使用for?range和for循環(huán)的區(qū)別,對于遍歷大數(shù)組而言,for循環(huán)能比for?range循環(huán)更高效與穩(wěn)定,這一點在數(shù)組元素為結構體類型更加明顯,下文具體分析感興趣得小伙伴可以參考一下2022-05-05
Go語言實現(xiàn)多協(xié)程文件下載器的過程詳解
這篇文章主要介紹了Go語言實現(xiàn)多協(xié)程文件下載器的相關資料,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-08-08

