最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語言學(xué)習(xí)之包和變量詳解

 更新時間:2018年06月16日 11:17:58   作者:W-D  
這篇文章主要給大家愛介紹了關(guān)于go語言學(xué)習(xí)之包和變量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用go語言具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文主要介紹了關(guān)于go語言之包和變量的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。

一、包的概念

包是go語言中不可缺少部分,在每個go源碼的第一行進行定義,定義方式是:package "包名",并且該名稱是作為調(diào)用該包時候所使用的名稱。

包的概念總結(jié):

  • 每個 Go 文件都屬于且僅屬于一個包。一個包可以由許多以 .go 為擴展名的源文件組成,因此文件名和包名可能不同,為了規(guī)范,功能相似或者屬于相同性質(zhì)的源碼歸集到相同的包名中。
  • 每個應(yīng)用程序都必須有且只有一個包名稱為main,他是該程序的入口,執(zhí)行時候會尋找包名為main的代碼
  • 包與包之間可以被相互調(diào)用,主要為了減少代碼重復(fù)性
  • 包一旦被引入就需要被使用,除非引入的時候忽略它(前面加_表示忽略它,只是用它來初始化),如果引入了包,而在代碼中沒用使用,運行時候會報錯

二、包的引入

1.包引入的方法

方法一:

import "fmt"
import "os"

方法二:

import "fmt"; import "os"

方法三(推薦?。?/p>

import (
 "fmt"
 "os"
)

2.引入其他包

go語言中,引入包的路徑是根據(jù)GOPATH/src 這個環(huá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進行引入如下:

package main

import (
 "fmt"
 "day02/eg1" /* 引入包 */
)

func main() {
 add.Sum(2,3) /* 調(diào)用包 */
 fmt.Println("Hello, World!")
}

圖示:

二、變量

1.單個變量的聲明

go語言中,所有變量都必須先聲明在使用,下面是聲明變量和賦值方法:

  • 先聲明后賦值: var <變量名稱> <變量類型>         賦值:變量的賦值格式: <變量名稱> = <表達式>
  • 聲明的同時賦值:var <變量名稱> <變量類型> = <表達式>   (簡寫為 變量名稱 :=  表達式)

示例:

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)識符,在程序運行時,不會被修改的量。

常量中的數(shù)據(jù)類型只可以是布爾型、數(shù)字型(整數(shù)型、浮點型和復(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" //獨立值,iota += 1
   e   //"ha" iota += 1
   f = 100 //iota +=1
   g   //100 iota +=1
   h = iota //7,恢復(fù)計數(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ù)的作用域陷阱詳解

    go語言中匿名函數(shù)的作用域陷阱詳解

    GO語言的匿名函數(shù)(anonymous?function),其實就是閉包.是指不需要定義函數(shù)名的一種函數(shù)實現(xiàn)方式,下面這篇文章主要給大家介紹了關(guān)于go語言中匿名函數(shù)作用域陷阱的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • golang如何去除 context 的 deadline

    golang如何去除 context 的 deadline

    在使用 context 的時候遇到了開協(xié)程處理任務(wù)的情況,但是直接在協(xié)程里使用主線程的 context 會導(dǎo)致當(dāng)主線程返回時協(xié)程任務(wù)也會因為 context cancel 而失敗,本文提供了兩種辦法可以取消掉 context 里的 timeout 和 deadline,再設(shè)置一個新的 timeout 上去
    2023-03-03
  • Go中函數(shù)的使用細(xì)節(jié)與注意事項詳解

    Go中函數(shù)的使用細(xì)節(jié)與注意事項詳解

    在Go語言中函數(shù)可是一等的(first-class)公民,函數(shù)類型也是一等的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于Go中函數(shù)的使用細(xì)節(jié)與注意事項的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Go語言bufio庫的全面指南與實戰(zhàn)技巧詳解

    Go語言bufio庫的全面指南與實戰(zhàn)技巧詳解

    這篇文章主要為大家全面介紹一下?bufio?庫的核心組件與功能,包括?Reader、Writer?和?Scanner?等并深入探討它們在實際編程中的運用場景和技巧,感興趣的可以了解下
    2024-01-01
  • gorm golang 并發(fā)連接數(shù)據(jù)庫報錯的解決方法

    gorm golang 并發(fā)連接數(shù)據(jù)庫報錯的解決方法

    今天小編就為大家分享一篇gorm golang 并發(fā)連接數(shù)據(jù)庫報錯的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Go語言使用sqlx操作MySQL

    Go語言使用sqlx操作MySQL

    sqlx 包作為一個擴展庫,它在 database/sql 的基礎(chǔ)上,提供了更高級別的便利,極大地簡化了數(shù)據(jù)庫操作,本文章將介紹如何通過sqlx包來操作 MySQL 數(shù)據(jù)庫,感興趣的可以了解下
    2024-11-11
  • Go語言如何并發(fā)超時處理詳解

    Go語言如何并發(fā)超時處理詳解

    大家都知道golang并沒有在語言層次上提供超時操作,但可以通過一些小技巧實現(xiàn)超時。下面來一起看看吧,有需要的朋友們可以參考借鑒。
    2016-09-09
  • 解決Golang在Web開發(fā)時前端莫名出現(xiàn)的空白換行

    解決Golang在Web開發(fā)時前端莫名出現(xiàn)的空白換行

    最近在使用Go語言開發(fā)Web時,在前端莫名出現(xiàn)了空白換行,找了網(wǎng)上的一些資料終于找到了解決方法,現(xiàn)在分享給大家,有需要的可以參考。
    2016-08-08
  • Go語言中并發(fā)的工作原理

    Go語言中并發(fā)的工作原理

    本文詳細(xì)講解了Go語言中并發(fā)的工作原理,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Golang實現(xiàn)簡易的rpc調(diào)用

    Golang實現(xiàn)簡易的rpc調(diào)用

    RPC指(Remote Procedure Call Protocol)遠程過程調(diào)用協(xié)議。本文將實現(xiàn)利用Golang進行rpc調(diào)用(只實現(xiàn)一個rpc框架基本的功能,不對性能做保證),需要的可以參考一下
    2023-03-03

最新評論

丰顺县| 高要市| 台湾省| 江陵县| 海盐县| 安庆市| 额尔古纳市| 鄂尔多斯市| 忻州市| 静安区| 南召县| 阜南县| 郴州市| 泸水县| 淮安市| 阿拉善左旗| 西宁市| 巩留县| 乐清市| 临安市| 磴口县| 苏尼特右旗| 桓台县| 龙口市| 米脂县| 策勒县| 都兰县| 平罗县| 石首市| 南汇区| 鄯善县| 广东省| 丹阳市| 临海市| 莎车县| 西平县| 科技| 高淳县| 丽江市| 衡阳县| 镇安县|