亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入了解Go語(yǔ)言的基本語(yǔ)法與常用函數(shù)

 更新時(shí)間:2022年07月15日 15:30:58   作者:哥德巴赫的猜想  
這篇文章主要為大家詳細(xì)介紹一下Go語(yǔ)言中的基本語(yǔ)法與常用函數(shù),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,需要的可以參考一下

一、基本語(yǔ)法

標(biāo)識(shí)符命名規(guī)范

Go 是區(qū)分大小寫(xiě)的,標(biāo)識(shí)符的命名包含了 Go 中變量、常量、函數(shù)、結(jié)構(gòu)體、接口以及方法的命令,Go 限定任何需要對(duì)外暴露的標(biāo)識(shí)符必須以大寫(xiě)字母開(kāi)頭,不需要對(duì)外暴露的標(biāo)識(shí)符則需要以小寫(xiě)字母開(kāi)頭。

標(biāo)識(shí)符以大寫(xiě)開(kāi)頭,就表示可以被外部包的代碼引用,稱(chēng)之為導(dǎo)出。如果以小寫(xiě)字母開(kāi)頭,那么對(duì)外就是不可見(jiàn)的,但是在整個(gè)包的內(nèi)部是可見(jiàn)且可用的。

標(biāo)識(shí)符的命名應(yīng)該避免與 Go 中內(nèi)置的關(guān)鍵字沖突。

變量的命令規(guī)范

采用駝峰命名法,首字母根據(jù)訪問(wèn)控制大寫(xiě)或者小寫(xiě)

var username string
var url string

常量的命名規(guī)范

常量的名稱(chēng)全部使用大寫(xiě)字母組成,并且使用下劃線來(lái)分隔多個(gè)詞

const JUEJIN_URL = "https://juejin.cn"

枚舉類(lèi)型的常量

const (
    SUCCESS = "200"
    NOT_FOUND = "404"
    INTERAL_SERVER_ERROR = "500"
)

結(jié)構(gòu)體的命名規(guī)范

結(jié)構(gòu)體也是采用駝峰命名法,首字母的大小寫(xiě)根據(jù)訪問(wèn)控制決定

type Info stuct {
    Username string
    Age int 
}

接口命名規(guī)范

接口的命名規(guī)范與結(jié)構(gòu)體的命名規(guī)范基本一致,只有一個(gè)方法的接口命名以 "er" 結(jié)尾,如 Fighter

type Fighter interface {
    fight(p []byte)(skill string, err error)
}

文件和包的命名規(guī)范

Go 文件和包的命名有小寫(xiě)字母組成,簡(jiǎn)短、有意義。注意 包的命名不要使用下劃線或者駝峰命名。

Go 中的常用關(guān)鍵字

關(guān)鍵字說(shuō)明
var定義變量
const定義常量
package
import導(dǎo)入包關(guān)鍵字
func定義函數(shù)關(guān)鍵字
return用于修飾函數(shù)中返回值
interface定義接口
struct定義抽象數(shù)據(jù)類(lèi)型
type聲明自定義類(lèi)型
map聲明 map 數(shù)據(jù)類(lèi)型
range用于遍歷
if、else、for、switch、break、case、continue、fallthrough、soto、default用于流程控制

Go 中的注釋

Go 中使用 // 來(lái)注釋代碼,使用 /* 多行代碼 */ 來(lái)注釋多行代碼

變量的定義與使用

Go 中的變量有多種定義方式,可以使用關(guān)鍵字 var 定義變量,也可以一次定義多個(gè)變量。

使用 var 關(guān)鍵字定義變量

var variable_name variable_type = value

一次聲明多個(gè)相同類(lèi)型的變量

var variable_name1, variable_name2 variable_type

一次聲明多個(gè)不同類(lèi)型的變量

var (
    variable_name1 variable_type
    variable_name2 variable_type
)

使用 := 自定判斷變量類(lèi)型定義變量

name := "Tony"

可以省略 var 關(guān)鍵字

在 go-quickstart 項(xiàng)目下新建一個(gè)文件夾,命名為 ”01-基本語(yǔ)法“,在該文件夾下新建 Go 文件 ex1.go

package main

import "fmt"

func main() {

   // 使用 var 關(guān)鍵字定義變量
   var name string = "tony"
   fmt.Println("name 變量的值為:", name)

   // 使用 var 定義多個(gè)相同類(lèi)型的變量
   var username, address, phone string
   username = "Tony"
   address = "NY"
   phone = "010-111222"
   fmt.Println("name、address、phone 三個(gè)變量的值分別為:", username, address, phone)

   // 使用 var 定義多個(gè)不同類(lèi)型的變量
   var (
      user_name    string
      user_age     int
      user_balance float64
   )

   user_name = "tony"
   user_age = 40
   user_balance = 1000000.0
   fmt.Println("user_name, user_age, user_balance 三個(gè)變量的值分別為:", user_name, user_age, user_balance)

   // 使用自動(dòng)類(lèi)型推斷方式定義變量
   user_id := 1000
   fmt.Println("user_id 變量的值為:", user_id)
}

執(zhí)行上述代碼,輸出結(jié)果如下:

name 變量的值為: tony
name、address、phone 三個(gè)變量的值分別為: Tony NY 010-111222
user_name, user_age, user_balance 三個(gè)變量的值分別為: tony 40 1e+06
user_id 變量的值為: 1000

使用 := 定義變量是 Go 中最常使用的變量定義的方式,但是這種方式定義的變量只能在局部代碼塊中使用,不能再全局使用

定義常量

常量的定義使用 const 關(guān)鍵字,常量一旦被定義就無(wú)法修改

package main

import "fmt"

func main() {

   // 定義常量使用 const 關(guān)鍵字,一旦被定義,不可修改
   const URL = "https://juejin.cn"

   fmt.Println("常量 URL 的值為:", URL)

   // 一次定義多個(gè)常量
   const (
      HOST = 3306
      APP  = "/go"
   )

   fmt.Println("HOST 和 APP 兩個(gè)常量的值為:", HOST, APP)

   // 定義常量時(shí),如果只有第一個(gè)常量賦值了,后面常量沒(méi)有賦值情況下,默認(rèn)的值等于第一個(gè)常量賦的值
   const (
      NUM = 100
      COUNT
      QUANTITY
   )
   fmt.Println("NUM,COUNT,QUANTITY 的值分別為:", NUM, COUNT, QUANTITY)
}

執(zhí)行上述代碼,輸出結(jié)果如下:

常量 URL 的值為: https://juejin.cn
HOST 和 APP 兩個(gè)常量的值為: 3306 /go
NUM,COUNT,QUANTITY 的值分別為: 100 100 100

二、常用函數(shù)

main 函數(shù)與 init 函數(shù)

main 函數(shù)

在上面的代碼中,所有的代碼都是寫(xiě)在使用 func 關(guān)鍵字定義的 main 函數(shù)中,在 Go 中 main 函數(shù)是入口函數(shù),類(lèi)似 Java 中的 main 函數(shù)。

init 函數(shù)

Go 中 init 函數(shù)負(fù)責(zé) package 的初始化,init 函數(shù):

  • 在 main 函數(shù)前執(zhí)行,自動(dòng)被調(diào)用,初始化 package 中的變量等
  • init 函數(shù)不能被其他函數(shù)調(diào)用
  • 每個(gè)包可以有多個(gè) init 函數(shù),同一個(gè)包的 init 函數(shù)執(zhí)行順序與 init 函數(shù)定義的位置有關(guān)
  • 包中每個(gè)源文件也可以又有多個(gè)init 函數(shù)
  • 不同包中的 init 函數(shù)按照導(dǎo)入的依賴(lài)關(guān)系決定 init 函數(shù)的執(zhí)行順序
  • init 函數(shù)沒(méi)有返回值
// filename ex4.go

package main

import "fmt"

func init() {
   fmt.Println("這是第一個(gè) init 函數(shù)")
}

func init() {
   fmt.Println("這是第二個(gè) init 函數(shù)")
}

func init() {
   fmt.Println("這是第三個(gè) init 函數(shù)")
}

func main() {

   // 常用函數(shù)
   fmt.Println("這是 main 函數(shù)")

}

執(zhí)行上述代碼,輸出記過(guò)如下:

這是第一個(gè) init 函數(shù)
這是第二個(gè) init 函數(shù)
這是第三個(gè) init 函數(shù)
這是 main 函數(shù)

調(diào)用第一個(gè)和第三個(gè) init 函數(shù)的位置,再次執(zhí)行改代碼

這是第三個(gè) init 函數(shù)
這是第一個(gè) init 函數(shù)
這是第二個(gè) init 函數(shù)
這是 main 函數(shù)

同一個(gè)文件中 init 函數(shù)執(zhí)行的順序與位置有關(guān),但是都會(huì)先于 main 函數(shù)執(zhí)行。

init 函數(shù) VS main 函數(shù)

main 函數(shù)和 init 函數(shù)定義時(shí)都不能有任何返回值,且都是有 Go 自動(dòng)調(diào)用的。

main 函數(shù)只能定義一個(gè),init 函數(shù)可以定義多個(gè)。

這兩個(gè)函數(shù)官方只能定義在測(cè)試環(huán)境中使用,生產(chǎn)環(huán)境不推薦使用。

fmt 包及其函數(shù)

上述代碼中除了 main 函數(shù)還涉及到了打印相關(guān)的函數(shù),這些函數(shù)都在 fmt 包下,共有三個(gè)輸出函數(shù)

  • Println:自動(dòng)換行,且一次輸出多個(gè)值時(shí),多個(gè)值中間會(huì)帶有空格
  • Print:不自動(dòng)換行,多個(gè)值連續(xù)輸出,沒(méi)有空格
  • Printf:格式化輸出
// filename ex5.go


package main

import "fmt"

func main() {

   // 常用函數(shù)
   name_01 := "tony1"
   name_02 := "tony2"
   name_03 := "tony3"
   fmt.Println("自動(dòng)換行,多個(gè)值之間會(huì)有空格", name_01, name_02, name_03)
   fmt.Print("不自動(dòng)換行,多個(gè)值之間沒(méi)有空格", name_01, name_02, name_03)
   fmt.Print("\n")
   fmt.Printf("%v, %v, %v 格式化輸出", name_01, name_02, name_03)

}

執(zhí)行上述代碼,輸出結(jié)果如下:

自動(dòng)換行,多個(gè)值之間會(huì)有空格 tony1 tony2 tony3
不自動(dòng)換行,多個(gè)值之間會(huì)有空格tony1tony2tony3
tony1, tony2, tony3 格式化輸出

格式化輸出時(shí) %v 表示獲取變量的值。

以上就是深入了解Go語(yǔ)言的基本語(yǔ)法與常用函數(shù)的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言 語(yǔ)法 函數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 從錯(cuò)誤中學(xué)習(xí)改正Go語(yǔ)言六個(gè)壞習(xí)慣提高編程技巧

    從錯(cuò)誤中學(xué)習(xí)改正Go語(yǔ)言六個(gè)壞習(xí)慣提高編程技巧

    這篇文章主要為大家介紹了從錯(cuò)誤中學(xué)習(xí)改正Go語(yǔ)言五個(gè)壞習(xí)慣提高編程技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Golang?Mutex?原理詳細(xì)解析

    Golang?Mutex?原理詳細(xì)解析

    這篇文章主要介紹了Golang?Mutex原理詳細(xì)解析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Go語(yǔ)言中并發(fā)的工作原理

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

    本文詳細(xì)講解了Go語(yǔ)言中并發(fā)的工作原理,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 關(guān)于go-zero服務(wù)自動(dòng)收集問(wèn)題分析

    關(guān)于go-zero服務(wù)自動(dòng)收集問(wèn)題分析

    這篇文章主要介紹了關(guān)于go-zero服務(wù)自動(dòng)收集問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 深入了解Golang中的反射機(jī)制

    深入了解Golang中的反射機(jī)制

    反射是指在程序運(yùn)行時(shí)動(dòng)態(tài)地檢查和修改對(duì)象的能力,在Go語(yǔ)言中,通過(guò)反射可以在運(yùn)行時(shí)檢查變量的類(lèi)型、獲取結(jié)構(gòu)體字段和方法的信息,以及動(dòng)態(tài)調(diào)用方法等操作,本文將帶你深入了解Golang中的反射機(jī)制,感興趣的同學(xué)可以跟著小編一起來(lái)學(xué)習(xí)
    2023-05-05
  • 使用Go語(yǔ)言構(gòu)建高效的二叉搜索樹(shù)聯(lián)系簿

    使用Go語(yǔ)言構(gòu)建高效的二叉搜索樹(shù)聯(lián)系簿

    樹(shù)是一種重要的數(shù)據(jù)結(jié)構(gòu),而二叉搜索樹(shù)(BST)則是樹(shù)的一種常見(jiàn)形式,在本文中,我們將學(xué)習(xí)如何構(gòu)建一個(gè)高效的二叉搜索樹(shù)聯(lián)系簿,感興趣的可以了解下
    2024-01-01
  • 使用Go基于WebSocket構(gòu)建千萬(wàn)級(jí)視頻直播彈幕系統(tǒng)的代碼詳解

    使用Go基于WebSocket構(gòu)建千萬(wàn)級(jí)視頻直播彈幕系統(tǒng)的代碼詳解

    這篇文章主要介紹了使用Go基于WebSocket構(gòu)建千萬(wàn)級(jí)視頻直播彈幕系統(tǒng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • GO語(yǔ)言協(xié)程創(chuàng)建使用并通過(guò)channel解決資源競(jìng)爭(zhēng)

    GO語(yǔ)言協(xié)程創(chuàng)建使用并通過(guò)channel解決資源競(jìng)爭(zhēng)

    這篇文章主要為大家介紹了GO語(yǔ)言協(xié)程創(chuàng)建使用并通過(guò)channel解決資源競(jìng)爭(zhēng),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • 基于go+vue實(shí)現(xiàn)的golang每日新聞數(shù)據(jù)瀏覽與檢索平臺(tái)(推薦)

    基于go+vue實(shí)現(xiàn)的golang每日新聞數(shù)據(jù)瀏覽與檢索平臺(tái)(推薦)

    gonews是基于 go+vue 實(shí)現(xiàn)的golang每日新聞瀏覽與檢索平臺(tái),本文通過(guò)實(shí)例代碼給大家講解,介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-01-01
  • Go?slice切片make生成append追加copy復(fù)制示例

    Go?slice切片make生成append追加copy復(fù)制示例

    這篇文章主要為大家介紹了Go使用make生成切片、使用append追加切片元素、使用copy復(fù)制切片使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評(píng)論