欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go基礎(chǔ)語法的使用

 更新時(shí)間:2023年11月20日 10:14:00   作者:hope_wisdom  
本文主要介紹了Go基礎(chǔ)語法的使用,包括標(biāo)識(shí)符、關(guān)鍵字、行分隔符、var關(guān)鍵字、:=運(yùn)算符、空格、注釋、package、import、輸入輸出、運(yùn)算符、條件控制、循環(huán)等,感興趣的可以了解一下

概述

在上一節(jié)的內(nèi)容中,我們介紹了第一個(gè)Go程序,包括:安裝Go環(huán)境、編寫第一個(gè)Go程序、編譯并運(yùn)行程序等。在本節(jié)中,我們將介紹Go的基礎(chǔ)語法。Go是一門簡(jiǎn)潔和優(yōu)雅的語言,有自己特殊的一些語法規(guī)則。因此,在介紹Go編程的有關(guān)知識(shí)之前,先熟悉下Go的基礎(chǔ)語法,是非常有必要的。

截止到2023年10月,Go的最新版本為1.21,本專欄將使用Go 1.21的語法介紹相關(guān)知識(shí)。

標(biāo)識(shí)符

在Go語言中,標(biāo)識(shí)符是用于命名變量、函數(shù)、結(jié)構(gòu)體、接口等程序元素的名稱。以下是Go語言對(duì)標(biāo)識(shí)符的一些要求。

1、標(biāo)識(shí)符必須以字母(a-z或A-Z)或下劃線(_)開頭。

2、標(biāo)識(shí)符的后面可以跟字母、數(shù)字(0-9)或下劃線。

3、標(biāo)識(shí)符是區(qū)分大小寫的,這意味著變量x和變量X被視為兩個(gè)不同的標(biāo)識(shí)符。

4、不能使用Go語言的關(guān)鍵字作為標(biāo)識(shí)符,比如:break、case、const、continue等。

5、標(biāo)識(shí)符的命名應(yīng)具有描述性,能夠清晰地表達(dá)其用途和含義;良好的命名可以提高代碼的可讀性和可維護(hù)性。

6、盡量避免使用單個(gè)字符作為標(biāo)識(shí)符,特別是變量名;單個(gè)字符的變量名可能會(huì)導(dǎo)致代碼的可讀性降低。

7、在不同的作用域內(nèi),盡量避免使用相同名稱的標(biāo)識(shí)符,以確保代碼的一致性和準(zhǔn)確性。

 以下是一些無效的標(biāo)識(shí)符:1name(以數(shù)字開頭)、case(Go語言的關(guān)鍵字)、i+j(+是不允許的字符)。

關(guān)鍵字

Go語言的關(guān)鍵字(Keywords)是預(yù)定義的特殊標(biāo)識(shí)符,用于表示程序中的特定概念或語法結(jié)構(gòu)。一共有25個(gè)關(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。

行分隔符

在Go語言中,行分隔符通常通過換行符來表示,而不是分號(hào)。Go語言與其他一些編程語言(比如:C/C++、Java等)不同,它不需要在每行代碼末尾使用分號(hào)來表示語句的結(jié)束。每個(gè)語句的結(jié)束是通過自然換行符來識(shí)別的,也就是說,當(dāng)你在代碼中輸入一個(gè)換行符時(shí),Go編譯器會(huì)認(rèn)為該語句已經(jīng)結(jié)束。

在下面的示例代碼中,fmt.Println語句沒有使用分號(hào)來分隔,而是通過自然換行符來分隔不同的語句。

package main

import "fmt"

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

當(dāng)然,如果需要將多個(gè)語句寫在同一行,則必須使用分號(hào)來人為區(qū)分。但在實(shí)際開發(fā)中,我們并不鼓勵(lì)這種做法。

package main

import "fmt"

func main() {
    fmt.Println("Hello");fmt.Println("CSDN")
}

var關(guān)鍵字

在Go語言中,var是一個(gè)關(guān)鍵字,用于聲明一個(gè)或多個(gè)變量。使用var關(guān)鍵字可以聲明不同類型的變量,并可以指定變量的初始值。

以下是使用var聲明變量的基本語法:

var 變量名 類型

在下面的示例代碼中,我們聲明了一個(gè)整數(shù)類型的變量。

package main

import "fmt"

func main() {
    var a int
}

可以在聲明的同時(shí)初始化變量,如果給變量指定了初始值,可以省去類型,由編譯器根據(jù)初始值自動(dòng)推斷變量的類型。當(dāng)然,也可以一次聲明多個(gè)變量,用逗號(hào)分隔它們即可。

package main

import "fmt"

func main() {
    var a int = 66
    var b = 88
    var c, d string
    c = "Hello"
    d = "CSDN"
    // 輸出:66 88 Hello CSDN
    fmt.Println(a, b, c, d)
}

注意:如果聲明的變量和import的包未被使用, 將會(huì)導(dǎo)致編譯錯(cuò)誤,這有助于提高代碼的清潔度和可讀性。

:=運(yùn)算符

在Go語言中,:=是一個(gè)特殊的運(yùn)算符,用于聲明變量并初始化它們的值,它被稱為短變量聲明運(yùn)算符。使用 :=運(yùn)算符可以同時(shí)完成變量的聲明和初始化,它將根據(jù)右側(cè)的表達(dá)式推斷變量的類型,并將該類型的值賦給變量。

在下面的示例代碼中,變量a被聲明為整數(shù)類型,并將其初始化為66。

package main

import "fmt"

func main() {
    a := 66
    fmt.Println(a);
}

需要注意的是,:=運(yùn)算符只能用于函數(shù)內(nèi)部的局部變量,不能用于全局變量。在函數(shù)外部,應(yīng)該使用普通的變量聲明語法,即使用var關(guān)鍵字進(jìn)行聲明。另外,出現(xiàn)在:=運(yùn)算符左側(cè)的變量不應(yīng)該是已經(jīng)被聲明過的,否則會(huì)導(dǎo)致編譯錯(cuò)誤。

空格

在Go語言中,空格通常用于分隔標(biāo)識(shí)符、關(guān)鍵字、運(yùn)算符等,用于提高代碼的可讀性。

Go語言使用空格進(jìn)行代碼塊的縮進(jìn),通常使用4個(gè)空格作為一個(gè)縮進(jìn)級(jí)別。這是Go語言中代碼格式化的重要組成部分,以區(qū)分不同的代碼塊。

package main

import "fmt"

func main() {
    a := 6
    if a > 0 {
        fmt.Println("positive")
    } else {
        fmt.Println("zero or negative")
    }
}

在變量與運(yùn)算符間、運(yùn)算符兩側(cè)、函數(shù)參數(shù)間等場(chǎng)景下使用空格,可以大大增加代碼的可讀性。

package main

import "fmt"

func add(a, b int) int {
    return a + b
}

func main() {
    a := 66
    b := 99
    c := add(a, b)
    fmt.Println(c)    
}

注意:使用空格可以提高代碼的可讀性和清晰度,但過度使用空格可能會(huì)使代碼看起來過于分散。因此,在使用空格時(shí)應(yīng)該保持適度,遵循良好的編碼風(fēng)格和規(guī)范。

注釋

在Go語言中,注釋是一種向代碼中添加說明和解釋的方式,不會(huì)影響程序的執(zhí)行。Go語言支持兩種類型的注釋:?jiǎn)涡凶⑨尯投嘈凶⑨尅?/p>

單行注釋以雙斜線(//)開頭,可以在其后添加注釋內(nèi)容。單行注釋可以獨(dú)立占用一行,也可以出現(xiàn)在代碼行的末尾。

// 這是注釋1
a := 66
b := 99     // 這是注釋2

多行注釋以/*開頭,以*/結(jié)尾,可以包含多行文本,通常用于說明函數(shù)、結(jié)構(gòu)體等代碼塊的用途和行為。

/*
    第一行多行注釋
    第二行多行注釋
*/
a := 66

package

在Go語言中,package用于組織代碼、提供命名空間。一個(gè)package可以包含多個(gè)Go源文件,并且可以是自定義的或標(biāo)準(zhǔn)庫(kù)中的。通過使用package關(guān)鍵字,可以將相關(guān)的代碼文件組合在一起,形成一個(gè)獨(dú)立的模塊。每個(gè)Go源文件都必須屬于一個(gè)package,并且每個(gè)package都可以包含一個(gè)或多個(gè)Go源文件。

在下面的示例代碼中,我們聲明了test.go文件屬于main package。在main package中,我們導(dǎo)入了fmt package,并使用fmt.Println函數(shù)打印了一條消息。

// test.go  
package main

import "fmt"

func main() {
    fmt.Println("Hello, CSDN")
}

通過將相關(guān)的代碼文件組織在同一個(gè)package中,可以確保它們之間的命名沖突最小化,并且可以輕松地在其他地方引用和使用這些文件。

import

在Go語言中,import關(guān)鍵字用于引入外部依賴包,以便在程序中使用它們提供的函數(shù)、類型和變量等。要使用import導(dǎo)入包,需要指定包的完整名稱,并使用符號(hào).來指定導(dǎo)入的包所在的目錄。比如:要導(dǎo)入標(biāo)準(zhǔn)庫(kù)中的fmt包,可以使用以下語句:import "fmt"。這將在程序中引入fmt包,并使其中的函數(shù)和類型可用。

還可以使用別名來為導(dǎo)入的包指定一個(gè)自定義名稱,指定別名后,可以使用別名來調(diào)用包中的函數(shù)。比如:要將fmt包導(dǎo)入為my_fmt,可以參考下面的示例代碼。

package main

import my_fmt "fmt"

func main() {
    my_fmt.Println("Hello, CSDN")
}

輸入輸出

在Go語言中,輸入輸出是通過標(biāo)準(zhǔn)庫(kù)中的fmt包來處理的,fmt包提供了許多用于格式化輸入和輸出的函數(shù)。要實(shí)現(xiàn)輸入輸出,可以使用fmt.Scan或fmt.Scanln函數(shù)從標(biāo)準(zhǔn)輸入(通常是鍵盤)讀取輸入,并使用fmt.Print或fmt.Println函數(shù)將輸出寫入到標(biāo)準(zhǔn)輸出(通常是屏幕)。

在下面的示例代碼中,我們首先聲明了兩個(gè)變量name和age,分別用于保存用戶輸入的名字和年齡。然后,使用fmt.Print函數(shù)提示用戶輸入名字和年齡,并使用fmt.Scanln函數(shù)讀取用戶的輸入。最后,使用fmt.Printf函數(shù)將用戶的輸入信息格式化并輸出到標(biāo)準(zhǔn)輸出。

package main

import "fmt"

func main() {
    var name string
    fmt.Print("請(qǐng)輸入您的名字:")
    // 從標(biāo)準(zhǔn)輸入讀取名字
    fmt.Scanln(&name)

    var age int
    fmt.Print("請(qǐng)輸入您的年齡:")
    // 從標(biāo)準(zhǔn)輸入讀取年齡
    fmt.Scanln(&age)
  
    // 輸出信息到標(biāo)準(zhǔn)輸出
    fmt.Printf("歡迎%s, 您今年%d歲。\n", name, age)  
}

注意:在上面的示例代碼中,我們使用了&符號(hào)將變量的地址傳遞給了Scanln函數(shù)。這是因?yàn)?,Scanln函數(shù)需要訪問變量的內(nèi)存地址來更新變量的值。

運(yùn)算符

Go語言支持以下的運(yùn)算符。

算術(shù)運(yùn)算符:+(加法)、-(減法)、*(乘法)、/(除法)、%(取模)。

賦值運(yùn)算符:=(賦值)、+=(加等于)、-=(減等于)、*=(乘等于)、/=(除等于)、%=(模等于)。

比較運(yùn)算符:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。

邏輯運(yùn)算符:&&(邏輯與)、||(邏輯或)、!(邏輯非)。

位運(yùn)算符:&(按位與)、|(按位或)、^(按位異或)、~(按位取反)、<<(左移位)、>>(右移位)。

指針運(yùn)算符:&(取變量地址,返回變量的指針)、*(解引用指針)。

括號(hào)運(yùn)算符:()(括號(hào)運(yùn)算符,用于改變運(yùn)算順序)。

類型運(yùn)算符:typeOf(類型查詢運(yùn)算符),sizeof(大小查詢運(yùn)算符)。

空值運(yùn)算符:nil(空值運(yùn)算符,用于判斷變量是否為空)。

錯(cuò)誤運(yùn)算符:error(錯(cuò)誤運(yùn)算符,用于判斷變量是否為錯(cuò)誤值)。

接收運(yùn)算符:<-(接收運(yùn)算符,用于通道操作)。

索引運(yùn)算符:[](索引運(yùn)算符,用于訪問數(shù)組、切片、映射等類型的元素)。

斷言運(yùn)算符:類型.(值)(斷言運(yùn)算符,用于將一個(gè)接口類型的值轉(zhuǎn)換為具體的類型)。

類型轉(zhuǎn)換運(yùn)算符:類型(值)(類型轉(zhuǎn)換運(yùn)算符,用于將一個(gè)類型的值轉(zhuǎn)換為另一個(gè)類型)。

條件控制

在Go語言中,可以使用if、else if、else進(jìn)行條件判斷與執(zhí)行控制。

package main

import "fmt"

func main() {
  a := 66
  if a >= 88 {
    fmt.Println("Hello")
  } else if a > 50 && a < 88 {
    fmt.Println("CSDN")
  } else {
    fmt.Println("Other")
  }
}

還可以使用switch語句根據(jù)不同的條件執(zhí)行不同的代碼塊,其基本語法如下。其中,condition是一個(gè)布爾表達(dá)式,value1、value2等是要比較的值。如果condition的值等于某個(gè)值,就會(huì)執(zhí)行相應(yīng)的代碼塊。如果沒有匹配的值,可以選擇使用default代碼塊來執(zhí)行默認(rèn)操作。

switch condition {
case value1:
    // 執(zhí)行條件為value1時(shí)的代碼塊
case value2:
    // 執(zhí)行條件為value2時(shí)的代碼塊
...
default:
    // 執(zhí)行條件不滿足時(shí)的默認(rèn)代碼塊(可選)
}

在下面的示例代碼中,我們使用switch語句來輸出某個(gè)月的天數(shù)。

package main

import "fmt"

func main() {
    month := 3
    switch month {
    case 1, 3, 5, 7, 8, 10:
        fmt.Println("31 days")
    case 4, 6, 9, 11:
        fmt.Println("30 days")
    case 2:
        fmt.Println("28 days or 29 days")
    default:
        fmt.Println("invalid month")
    }
}

注意:?jiǎn)蝹€(gè)case后面可以傳多個(gè)值,用逗號(hào)進(jìn)行分隔;當(dāng)匹配多個(gè)值中的任何一個(gè)值時(shí),就會(huì)執(zhí)行后面的語句。

循環(huán)

在Go語言中,使用for語句來進(jìn)行循環(huán)控制。注意:與C/C++、Java等語言不同,Go語言中沒有while循環(huán)。

for循環(huán)有三種形式:第一種是基本的for循環(huán),第二種是簡(jiǎn)化的for循環(huán),最后一種是無限循環(huán)。

基本的for循環(huán)語法如下。其中,initialization是循環(huán)開始前的初始化語句;condition是循環(huán)條件,滿足條件時(shí)繼續(xù)執(zhí)行循環(huán);post是每次循環(huán)執(zhí)行完畢后的后處理語句。

for initialization; condition; post {
    // 循環(huán)體
}

在下面的示例代碼中,我們使用基本的for循環(huán)計(jì)算1到100相加的總和。

package main

import "fmt"

func main() {
    sum := 0
    for i := 1; i <= 100; i++ {
        sum += i
    }

    fmt.Println(sum)
}

簡(jiǎn)化的for循環(huán)只有循環(huán)條件,沒有初始化語句和后處理語句。在下面的示例代碼中,我們使用簡(jiǎn)化的for循環(huán)計(jì)算1到100相加的總和。

package main

import "fmt"

func main() {
    sum := 0
    i := 1
    for i <= 100 {
        sum += i
        i += 1
    }

    fmt.Println(sum)
}

無限循環(huán)直接使用for關(guān)鍵字即可,后面不需要帶其他語句。在下面的示例代碼中,我們使用無限循環(huán)計(jì)算1到100相加的總和。

package main

import "fmt"

func main() {
    sum := 0
    i := 1
    for {
        sum += i
        i += 1
        if i > 100 {
            break
        }
    }

    fmt.Println(sum)
}

到此這篇關(guān)于Go基礎(chǔ)語法的使用的文章就介紹到這了,更多相關(guān)Go 基礎(chǔ)語法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解如何在Go語言中循環(huán)數(shù)據(jù)結(jié)構(gòu)

    詳解如何在Go語言中循環(huán)數(shù)據(jù)結(jié)構(gòu)

    這篇文章主要為大家詳細(xì)介紹了如何在Go語言中循環(huán)數(shù)據(jù)結(jié)構(gòu)(循環(huán)字符串、循環(huán)map結(jié)構(gòu)和循環(huán)Struct),文中的示例代碼代碼講解詳細(xì),需要的可以參考一下
    2022-10-10
  • golang?JSON技巧小結(jié)

    golang?JSON技巧小結(jié)

    本文介紹了在Go語言中使用JSON時(shí)的一些小技巧,包括如何將字符串轉(zhuǎn)換為數(shù)字、臨時(shí)忽略空字段、臨時(shí)添加額外字段、粘合兩個(gè)struct、改名struct字段、支持不同類型的數(shù)字,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Go語言之結(jié)構(gòu)體與方法

    Go語言之結(jié)構(gòu)體與方法

    這篇文章主要介紹了Go語言之結(jié)構(gòu)體與方法,結(jié)構(gòu)體是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合。下面我們就一起來學(xué)習(xí)什么是Go語言之結(jié)構(gòu)體
    2021-10-10
  • Go語言跨平臺(tái)時(shí)字符串中的換行符如何統(tǒng)一?

    Go語言跨平臺(tái)時(shí)字符串中的換行符如何統(tǒng)一?

    本文介紹了Go語言中統(tǒng)一換行符的方法,包括使用`strings.ReplaceAll`函數(shù)將Windows風(fēng)格的換行符`\r\n`替換為Unix風(fēng)格的換行符`\n`,或?qū)\n`替換為`\r\n`,統(tǒng)一換行符可以避免不同平臺(tái)間顯示不一致、傳輸時(shí)出現(xiàn)多余的換行符或丟失換行符,以及解析錯(cuò)誤等問題
    2024-11-11
  • go實(shí)現(xiàn)一個(gè)內(nèi)存緩存系統(tǒng)的示例代碼

    go實(shí)現(xiàn)一個(gè)內(nèi)存緩存系統(tǒng)的示例代碼

    本文主要介紹了go實(shí)現(xiàn)一個(gè)內(nèi)存緩存系統(tǒng)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • 詳解MongoDB?Go?Driver如何記錄日志

    詳解MongoDB?Go?Driver如何記錄日志

    這篇文章主要為大家介紹了MongoDB?Go?Driver如何記錄日志詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Go結(jié)構(gòu)體指針引發(fā)的值傳遞思考分析

    Go結(jié)構(gòu)體指針引發(fā)的值傳遞思考分析

    這篇文章主要為大家介紹了Go結(jié)構(gòu)體指針引發(fā)的值傳遞思考分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Golang模擬令牌桶進(jìn)行對(duì)訪問的限流方式

    Golang模擬令牌桶進(jìn)行對(duì)訪問的限流方式

    這篇文章主要介紹了Golang模擬令牌桶進(jìn)行對(duì)訪問的限流方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • golang elasticsearch Client的使用詳解

    golang elasticsearch Client的使用詳解

    這篇文章主要介紹了golang elasticsearch Client的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go語言學(xué)習(xí)之文件操作方法詳解

    Go語言學(xué)習(xí)之文件操作方法詳解

    這篇文章主要為大家詳細(xì)介紹了Go語言中一些常見的文件操作,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下
    2022-04-04

最新評(píng)論