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

golang的基礎語法和常用開發(fā)工具詳解

 更新時間:2020年12月09日 14:21:15   作者:開發(fā)小程序的之樸  
這篇文章主要介紹了golang的基礎語法和常用開發(fā)工具,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

golang的基礎語法

golang的基礎語法和其他語言大部分都差別不大,如果我們有學習過其他語言,比如JavaScript,php,java,python等,有其他語言的語法基礎,那么我們學習golang將更容易上手。那我們直接開始介紹golang的語法吧。

注釋

注釋分單行注釋和多行注釋。golang的注釋和其他的開發(fā)語言的注釋是一樣的。雙斜杠表示單行注釋,/**/表示多行注釋。

// 單行注釋這么開頭
/* 
 多行注釋
*/

定義包名

一般來說,使用開發(fā)工具的時候,包名是不需要手動輸入的,開發(fā)工具會在創(chuàng)建文件的時候,自動生成包名。

比如定義一個包名稱為main的包:

package main //定義一個名稱為main的包
  • 每個go文件中必須定義包名來指明該文件歸屬于哪個包,而且定義包名必須在文件中非注釋的第一行;
  • go文件中若存在程序入口(main函數(shù)),則該文件定義的包名必須為main;
  • 一個文件中有且只有一次定義,即只有一行package語句;
  • 包名和文件名沒有必然聯(lián)系,可以不同。

導入依賴庫

依賴庫分為系統(tǒng)庫和第三方依賴庫。導入方式有兩種,單行導入和合并導入。一般上開發(fā)工具會自動幫忙處理。引用一個包的時候,使用單行,需要引用多個包的時候,會自動合并引用。

注意:導入的包都必須使用,若沒有使用編譯時將報錯。所以不要引入無用的包。

import "fmt"
import (
  "os"
  "strings"
  "gorm.io/gorm"
  "github.com/kataras/iris/v12"
)

函數(shù)

func是函數(shù)定義的關鍵字,函數(shù)體用 { } 包圍,注意: { (左括號)不能單獨成行,必須和main()在同一行。函數(shù)名小寫的時候表示這個函數(shù)是私有函數(shù),函數(shù)名大寫的時候,表示這個函數(shù)是公開函數(shù),公開函數(shù)可以全局訪問,私有函數(shù)只能在自己的包內(nèi)訪問。

func main(){
  fmt.Println("Hello World")
}

函數(shù)調(diào)用

函數(shù)的調(diào)用方式分2種,同一個包內(nèi)的函數(shù)調(diào)用,可以直接寫函數(shù)名稱就可以,不同包之間的調(diào)用,需要引入對方的包,然后通過包名.函數(shù)名的方式調(diào)用。

比如下方的函數(shù)調(diào)用是調(diào)用了fmt包的Println函數(shù)。

fmt.Println("Hello World")

變量、常量、占位符、運算符、數(shù)組、指針、結構體

變量

變量使用之前,需要先聲明。變量的聲明分幾種方式。一種是在開頭的時候聲明,使用 var 關鍵詞來聲明變量,另一種是在使用的時候聲明, 使用 := 來聲明和賦值。還有一種是合并聲明。不過盡量單獨聲明。

var a int = 1   //第一種: var 變量名 變量值
value := 2    //第二種: value_name := 1
var b, c, d = 1, 2, 3   //第三種: 合并聲明
var(           //第四種: 合并聲明
   value1 int   = 3
   value2 string = "Hello World"
)

上述有三種變量聲明方式,var是golang的關鍵詞,用于變量的聲明。第一、三和四種可以在任意地方聲明,當定義在函數(shù)體外時相當于全局變量;而第二種只能在函數(shù)體內(nèi)聲明,相當于局部變量。變量在聲明后若不手動定義,編譯器將為其賦值為相應的默認值

注意:golang中的變量、方法、結構體等等的名稱都推薦使用駝峰命名法,而名字的首字母如果是小寫字母則表示在包(package)內(nèi)可見;而如果是大寫字母則表示包外可見。

常量

const var a int = 1
const var (
    b int = 2
    c string = "Hello World"
)

常量通過關鍵詞const來定義。常量同樣有單行聲明和合并聲明,聲明時必須定義,定義后不可修改。

占位符

_ , a = myFunction()

function()函數(shù)有兩個返回值,第一個返回值賦給_ , 第二個返回值賦給a,此時的 就稱做占位符,可以理解為僅僅為了給第一個返回值有位置存放即可,這個返回值我再也不會用到;如果這個返回值之后還可能用到,則不能賦給 ,否則今后無法再使用。

運算符

golang的運算符包括:

  • 算術運算符: + 相加、 - 相減、 * 相乘、 / 相除、 % 求余、 ++ 自增、 -- 自減。
  • 關系運算符: == 檢查兩個值是否相等、 != 檢查兩個值是否不相等、 > 檢查左邊值是否大于右邊值、 < 檢查左邊值是否小于右邊值、 >= 檢查左邊值是否大于等于右邊值、 <= 檢查左邊值是否小于等于右邊值
  • 邏輯運算符: && 邏輯 和 運算符、 || 邏輯 或 運算符、 ! 邏輯 非 運算符
  • 位運算符: & 按位與運算符"&"是雙目運算符,其功能是參與運算的兩數(shù)各對應的二進位相與; | 按位或運算符"|"是雙目運算符,其功能是參與運算的兩數(shù)各對應的二進位相或; ^ 按位異或運算符"^"是雙目運算符,其功能是參與運算的兩數(shù)各對應的二進位相異或; << 左移運算符"<<"是雙目運算符,左移n位就是乘以2的n次方,其功能把"<<"左邊的運算數(shù)的各二進位全部左移若干位,由"<<"右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補0; >> 右移運算符">>"是雙目運算符,右移n位就是除以2的n次方,其功能是把">>"左邊的運算數(shù)的各二進位全部右移若干位,">>"右邊的數(shù)指定移動的位數(shù)。

golang的運算符合其他開發(fā)語言是一致的,這里不做更多介紹。

數(shù)組

數(shù)組是具有相同唯一類型的一組已編號且長度固定的數(shù)據(jù)項序列,這種類型可以是任意的原始類型例如整型、字符串或者自定義類型。

// 形如 var 變量名 [數(shù)量] 變量類型
var stuName [20] string

指針

一個指針變量指向了一個值的內(nèi)存地址。

var-type 為指針類型,var_name 為指針變量名,* 號用于指定變量是作為一個指針。

類似于變量和常量,在使用指針前你需要聲明指針。指針聲明格式如下:

// var var_name *var-type
var stuNameIndex *string

結構體

結構體定義需要使用 type 和 struct 語句。struct 語句定義一個新的數(shù)據(jù)類型,結構體中有一個或多個成員。type 語句設定了結構體的名稱。結構體的格式如下:

//形如 type variable_type struct { …… }
type People struct {
 var id  int
 var name string
}
var people People
people.id  = 1
people.name = "Sinclar"

切片

Go 語言切片是對數(shù)組的抽象。

Go 數(shù)組的長度不可改變,在特定場景中這樣的集合就不太適用,Go中提供了一種靈活,功能強悍的內(nèi)置類型切片("動態(tài)數(shù)組"),與數(shù)組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

var slice1 []type
//也可以指定長度
var slice1 []type = make([]type, 10)
//也可以簡寫為
slice1 := make([]type, 10)

條件語句

條件語句有兩種,一種是 if……else…… 語句,另一種是 switch 語句,還有一種select語句。

if……else……

if 條件 {
  執(zhí)行代碼
} else {
  執(zhí)行代碼
}

switch 語句

switch condition {
  case condition1:
    ...
  case condition2:
    ...
  default:
    ...
}

select 語句

這涉及到一些高級語法,本篇先不講述,我將在下一篇詳細解釋,感興趣的同學們可以自己查閱資料先學習一下。

switch語句中沒有break語句,golang的語法經(jīng)過優(yōu)化后,在某個case執(zhí)行完畢后就退出switch了,不會再接著往下執(zhí)行;

如果希望執(zhí)行了某個case之后接著往下執(zhí)行,可以在每個case最后使用fallthrough關鍵字。注意,使用fallthrough關鍵字后,后面的case是強制執(zhí)行,無論condition是否為true

for 循環(huán)語句

golang的循環(huán)語句只有一種。那就是for語句。for語句有幾種形式。

標準格式

/*for init; condition; next {
 doSomething
}*/
for i:=0; i<20; i++ {
 fmt.Println("i is: %d", i)
}

特殊格式

//無限循環(huán)
for {
 doSomething
}
for true {
 doSomething
}
//省略init或next
for ; sum<100; {
 sum = sum + 1
}

控制語句

break、continue和goto是用于for語句或switch語句內(nèi)的控制語句,其用法于c或c++中的用法相似,這里就不再贅述了。

看到這里,大家應該都覺得似曾相識,好像學過的編程語言都有這些東西。所以大家應該不用花太多時間在基礎語法上,幾分鐘就能看完??赐赀@些基礎知識,大家應該可以寫出一些簡單代碼來驗證今天的基礎語法。

但是,這里也只是講解了一些基礎用法,在接下來的學習中,我們還會遇到更多高級的用法,包括select、channel、方法、切片、范圍、集合和接口等內(nèi)容。

golnag的開發(fā)者工具

我現(xiàn)在使用的開發(fā)者工具是GoLand。這是一個非常強大的golang開發(fā)工具。因此在此我也推薦大家使用GoLand開發(fā)工具來開發(fā)我們的golang博客系統(tǒng)。

到此這篇關于golang的基礎語法和常用開發(fā)工具的文章就介紹到這了,更多相關golang常用開發(fā)工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • GoLang函數(shù)棧的使用詳細講解

    GoLang函數(shù)棧的使用詳細講解

    這篇文章主要介紹了GoLang函數(shù)棧的使用,我們的代碼會被編譯成機器指令并寫入到可執(zhí)行文件,當程序執(zhí)行時,可執(zhí)行文件被加載到內(nèi)存,這些機器指令會被存儲到虛擬地址空間中的代碼段,在代碼段內(nèi)部,指令是低地址向高地址堆積的
    2023-02-02
  • Golang?strings包常用字符串操作函數(shù)

    Golang?strings包常用字符串操作函數(shù)

    Golang?中的字符串統(tǒng)一使用?UTF-8?(屬于Unicode編碼的一種實現(xiàn)方式)進行編碼,本篇文章將結合具體實例對常用的字符串操作函數(shù)進行介紹,感興趣的可以了解一下
    2021-12-12
  • Golang中的關鍵字(defer、:=、go?func())詳細解讀

    Golang中的關鍵字(defer、:=、go?func())詳細解讀

    這篇文章主要介紹了Golang中的關鍵字(defer、:=、go?func())詳細解讀,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • go語言實現(xiàn)字符串base64編碼的方法

    go語言實現(xiàn)字符串base64編碼的方法

    這篇文章主要介紹了go語言實現(xiàn)字符串base64編碼的方法,實例分析了Go語言操作字符串的技巧及base64編碼的使用技巧,需要的朋友可以參考下
    2015-03-03
  • Go語言的結構體還能這么用?看這篇就夠了

    Go語言的結構體還能這么用?看這篇就夠了

    這篇文章主要為大家詳細介紹了Go語言結構體的各個知識點,最后還介紹了空結構體的3種妙用。文中的示例代碼講解詳細,希望對大家有所幫助
    2023-02-02
  • Go語言struct類型介紹

    Go語言struct類型介紹

    這篇文章主要介紹了Go語言struct類型介紹,本文講解了struct的2種聲明方式,struct的匿名字段等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • go操作Kafka使用示例詳解

    go操作Kafka使用示例詳解

    這篇文章主要為大家介紹了go操作Kafka使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Golang巧用defer進行錯誤處理的方法

    Golang巧用defer進行錯誤處理的方法

    錯誤處理是程序的重要組成部分,有效且優(yōu)雅的處理錯誤是大多數(shù)程序員的追求,下面這篇文章主要給大家介紹了關于Golang中巧用defer進行錯誤處理的方法,文中通過示例介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 在Go中實現(xiàn)高效可靠的鏈路追蹤系統(tǒng)

    在Go中實現(xiàn)高效可靠的鏈路追蹤系統(tǒng)

    在當今互聯(lián)網(wǎng)應用的架構中,分布式系統(tǒng)已經(jīng)成為主流,分布式系統(tǒng)的優(yōu)勢在于能夠提供高可用性、高并發(fā)性和可擴展性,本文將介紹鏈路追蹤的概念和原理,并重點介紹如何在Golang中實現(xiàn)高效可靠的鏈路追蹤系統(tǒng),需要的朋友可以參考下
    2023-10-10
  • Go日常開發(fā)常用第三方庫和工具介紹

    Go日常開發(fā)常用第三方庫和工具介紹

    這篇文章主要介紹了Go日常開發(fā)常用第三方庫和工具介紹,主要有web開發(fā)、數(shù)據(jù)庫開發(fā)、Redis開發(fā)需要的朋友可以參考下
    2022-11-11

最新評論

福安市| 永和县| 萝北县| 黄梅县| 红原县| 元阳县| 百色市| 谢通门县| 基隆市| 伊吾县| 阳朔县| 青浦区| 通道| 龙门县| 三门县| 山丹县| 东丰县| 祁东县| 双江| 抚松县| 胶州市| 洪洞县| 安图县| 东阿县| 贵南县| 盱眙县| 天长市| 壶关县| 锡林浩特市| 浙江省| 随州市| 利津县| 尼勒克县| 屯留县| 邓州市| 盖州市| 许昌县| 汝城县| 鞍山市| 闵行区| 同仁县|