go語言學(xué)習(xí)之包和變量詳解
前言
本文主要介紹了關(guān)于go語言之包和變量的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。
一、包的概念
包是go語言中不可缺少部分,在每個go源碼的第一行進(jìn)行定義,定義方式是:package "包名",并且該名稱是作為調(diào)用該包時候所使用的名稱。
包的概念總結(jié):
- 每個 Go 文件都屬于且僅屬于一個包。一個包可以由許多以 .go 為擴(kuò)展名的源文件組成,因此文件名和包名可能不同,為了規(guī)范,功能相似或者屬于相同性質(zhì)的源碼歸集到相同的包名中。
- 每個應(yīng)用程序都必須有且只有一個包名稱為main,他是該程序的入口,執(zhí)行時候會尋找包名為main的代碼
- 包與包之間可以被相互調(diào)用,主要為了減少代碼重復(fù)性
- 包一旦被引入就需要被使用,除非引入的時候忽略它(前面加_表示忽略它,只是用它來初始化),如果引入了包,而在代碼中沒用使用,運(yùn)行時候會報錯
二、包的引入
1.包引入的方法
方法一:
import "fmt" import "os"
方法二:
import "fmt"; import "os"
方法三(推薦?。?/p>
import ( "fmt" "os" )
2.引入其他包
go語言中,引入包的路徑是根據(jù)GOPATH/src 這個環(huán)境變量作為相對路徑進(jìn)行引入的,如果GOPATH存在多個,那么go將逐一尋找路徑,直到找到,若GOPATH/src未找到則編譯出錯。
示例:
我的GOPATH為:C:\Users\17647\Desktop\go_work\src
首先建立包文件1:C:\Users\17647\Desktop\go_work\src\day02\eg1\pkg.go(相對于GOPATH/src的路徑為day02\eg1\pkg.go)
內(nèi)容如下:
package add
import "fmt"
func Sum(a int,b int) {
var c int
c = a + b
fmt.Println("res",c)
}
在main進(jìn)行引入如下:
package main
import (
"fmt"
"day02/eg1" /* 引入包 */
)
func main() {
add.Sum(2,3) /* 調(diào)用包 */
fmt.Println("Hello, World!")
}
圖示:

二、變量
1.單個變量的聲明
go語言中,所有變量都必須先聲明在使用,下面是聲明變量和賦值方法:
- 先聲明后賦值: var <變量名稱> <變量類型> 賦值:變量的賦值格式: <變量名稱> = <表達(dá)式>
- 聲明的同時賦值:var <變量名稱> <變量類型> = <表達(dá)式> (簡寫為 變量名稱 := 表達(dá)式)
示例:
package main
import "fmt"
func main() {
var a string /* 聲明一個變量名為a,類型為字符串的變量 */
a = "wd" /* 對a變量賦值*/
var age int = 22 /* 聲明并賦值變量 */
fmt.Println(a,age)
}
2.多個變量聲明
- 先聲明后賦值:var <變量1>,<變量2>,<變量3> <變量類型> 賦值 : <變量1>,<變量2> = 值1,值2
- 聲明同時賦值 :var <變量1>,<變量2> = 值1,值2 可簡寫為: <變量1>,<變量2> = 值1,值2
- 多個變量還可以使用var()聲明
示例:
package main
import "fmt"
func main() {
var a,b int
a,b = 1,2
var c,d = 3,"wd" /* 類型自動推斷 */
e, f := 4, "hello" /* 簡寫 */
fmt.Println(a,b,c,d,e,f)
}
使用var()聲明
package main
import "fmt"
func main() {
var (
a int //默認(rèn)值為0
b string // 默認(rèn)值為空字符串("")
c = 3
)
fmt.Println(a,b,c)
}
3.變量名
命名原則:
- 首字符可以是任意的Unicode字符或者下劃線
- 剩余字符可以是Unicode字符、下劃線、數(shù)字
- 不能作為用以下關(guān)鍵字作為變量名
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
4.可見性
可見性即對包外可見,當(dāng)其他包調(diào)用當(dāng)前包的變量時候是否允許可見(可訪問)。
- 變量開頭字符大寫,表示可見
- 變量開頭字母非大寫,則表示私有,不可見
5.變量的作用域
- 函數(shù)內(nèi)定義的變量稱為局部變量,其作用域在函數(shù)內(nèi)
- 函數(shù)外定義的變量稱為全局變量,作用于整個包,并且該變量首字母大寫,則對其他包可見。
三、常量
常量是一個簡單值的標(biāo)識符,在程序運(yùn)行時,不會被修改的量。
常量中的數(shù)據(jù)類型只可以是布爾型、數(shù)字型(整數(shù)型、浮點(diǎn)型和復(fù)數(shù))和字符串型。
定義常量語法:
const 名稱 類型 = value
多個常量定義語法:
const ( a = 0 //類型自動推倒 b = 1 c = 2 )
iota解釋:
iota,特殊常量,可以認(rèn)為是一個可以被編譯器修改的常量。
在每一個const關(guān)鍵字出現(xiàn)時,被重置為0,然后再下一個const出現(xiàn)之前,每出現(xiàn)一次iota,其所代表的數(shù)字會自動增加1。
iota 可以被用作枚舉值:
const ( a = iota b = iota c = iota )
第一個 iota 等于 0,每當(dāng) iota 在新的一行被使用時,它的值都會自動加 1;所以 a=0, b=1, c=2 可以簡寫為如下形式:
const ( a = iota b c )
用法:
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //獨(dú)立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢復(fù)計(jì)數(shù)
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Go中函數(shù)的使用細(xì)節(jié)與注意事項(xiàng)詳解
在Go語言中函數(shù)可是一等的(first-class)公民,函數(shù)類型也是一等的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于Go中函數(shù)的使用細(xì)節(jié)與注意事項(xiàng)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Go語言bufio庫的全面指南與實(shí)戰(zhàn)技巧詳解
這篇文章主要為大家全面介紹一下?bufio?庫的核心組件與功能,包括?Reader、Writer?和?Scanner?等并深入探討它們在實(shí)際編程中的運(yùn)用場景和技巧,感興趣的可以了解下2024-01-01
gorm golang 并發(fā)連接數(shù)據(jù)庫報錯的解決方法
今天小編就為大家分享一篇gorm golang 并發(fā)連接數(shù)據(jù)庫報錯的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
解決Golang在Web開發(fā)時前端莫名出現(xiàn)的空白換行
最近在使用Go語言開發(fā)Web時,在前端莫名出現(xiàn)了空白換行,找了網(wǎng)上的一些資料終于找到了解決方法,現(xiàn)在分享給大家,有需要的可以參考。2016-08-08
Golang實(shí)現(xiàn)簡易的rpc調(diào)用
RPC指(Remote Procedure Call Protocol)遠(yuǎn)程過程調(diào)用協(xié)議。本文將實(shí)現(xiàn)利用Golang進(jìn)行rpc調(diào)用(只實(shí)現(xiàn)一個rpc框架基本的功能,不對性能做保證),需要的可以參考一下2023-03-03

