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

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

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

一、基本語法

標識符命名規(guī)范

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

標識符以大寫開頭,就表示可以被外部包的代碼引用,稱之為導出。如果以小寫字母開頭,那么對外就是不可見的,但是在整個包的內(nèi)部是可見且可用的。

標識符的命名應該避免與 Go 中內(nèi)置的關鍵字沖突。

變量的命令規(guī)范

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

var username string
var url string

常量的命名規(guī)范

常量的名稱全部使用大寫字母組成,并且使用下劃線來分隔多個詞

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

枚舉類型的常量

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

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

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

type Info stuct {
    Username string
    Age int 
}

接口命名規(guī)范

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

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

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

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

Go 中的常用關鍵字

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

Go 中的注釋

Go 中使用 // 來注釋代碼,使用 /* 多行代碼 */ 來注釋多行代碼

變量的定義與使用

Go 中的變量有多種定義方式,可以使用關鍵字 var 定義變量,也可以一次定義多個變量。

使用 var 關鍵字定義變量

var variable_name variable_type = value

一次聲明多個相同類型的變量

var variable_name1, variable_name2 variable_type

一次聲明多個不同類型的變量

var (
    variable_name1 variable_type
    variable_name2 variable_type
)

使用 := 自定判斷變量類型定義變量

name := "Tony"

可以省略 var 關鍵字

在 go-quickstart 項目下新建一個文件夾,命名為 ”01-基本語法“,在該文件夾下新建 Go 文件 ex1.go

package main

import "fmt"

func main() {

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

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

   // 使用 var 定義多個不同類型的變量
   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 三個變量的值分別為:", user_name, user_age, user_balance)

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

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

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

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

定義常量

常量的定義使用 const 關鍵字,常量一旦被定義就無法修改

package main

import "fmt"

func main() {

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

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

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

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

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

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

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

二、常用函數(shù)

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

main 函數(shù)

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

init 函數(shù)

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

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

package main

import "fmt"

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

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

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

func main() {

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

}

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

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

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

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

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

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

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

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

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

fmt 包及其函數(shù)

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

  • Println:自動換行,且一次輸出多個值時,多個值中間會帶有空格
  • Print:不自動換行,多個值連續(xù)輸出,沒有空格
  • Printf:格式化輸出
// filename ex5.go


package main

import "fmt"

func main() {

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

}

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

自動換行,多個值之間會有空格 tony1 tony2 tony3
不自動換行,多個值之間會有空格tony1tony2tony3
tony1, tony2, tony3 格式化輸出

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

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

相關文章

  • 在Golang中正確的修改HTTPRequest的Host的操作方法

    在Golang中正確的修改HTTPRequest的Host的操作方法

    我們工作中經(jīng)常需要通過HTTP請求Server的服務,比如腳本批量請求接口跑數(shù)據(jù),由于一些網(wǎng)關策略,部分Server會要求請求中Header里面附帶Host參數(shù),所以本文給大家介紹了如何在Golang中正確的修改HTTPRequest的Host,需要的朋友可以參考下
    2023-12-12
  • go語言通過管道連接兩個命令行進程的方法

    go語言通過管道連接兩個命令行進程的方法

    這篇文章主要介紹了go語言通過管道連接兩個命令行進程的方法,實例分析了Go語言操作命令行進程的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Go slice切片使用示例詳解

    Go slice切片使用示例詳解

    這篇文章主要為大家介紹了Go slice切片使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • vscode 通過Go:Install/Update Tools命令安裝失敗的問題解決

    vscode 通過Go:Install/Update Tools命令安裝失敗的問題解決

    本文介紹了在VSCode開發(fā)環(huán)境中通過Go:Install/UpdateTools命令安裝工具時遇到網(wǎng)絡問題的解決方法,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • go語言string轉(zhuǎn)結(jié)構(gòu)體的實現(xiàn)

    go語言string轉(zhuǎn)結(jié)構(gòu)體的實現(xiàn)

    本文主要介紹了go語言string轉(zhuǎn)結(jié)構(gòu)體的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Golang學習筆記(四):array、slice、map

    Golang學習筆記(四):array、slice、map

    這篇文章主要介紹了Golang學習筆記(四):array、slice、map,本文分別講解了這3個類型的聲明&賦值、元素訪問、其它操作,需要的朋友可以參考下
    2015-05-05
  • Go語言開發(fā)前后端不分離項目詳解

    Go語言開發(fā)前后端不分離項目詳解

    這篇文章主要為大家介紹了Go語言開發(fā)前后端不分離項目詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • go語言實現(xiàn)聊天服務器的示例代碼

    go語言實現(xiàn)聊天服務器的示例代碼

    這篇文章主要介紹了go語言實現(xiàn)聊天服務器的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Go?interface?接口的最佳實踐經(jīng)驗分享

    Go?interface?接口的最佳實踐經(jīng)驗分享

    go?的接口在go的編程里面用的十分頻繁,尤其是空接口的使用,因為有了接口,才使得Go語言變得異常的強大,今天給大家介紹下Go?interface?接口的最佳實踐經(jīng)驗分享,感興趣的朋友一起看看吧
    2022-04-04
  • beego獲取ajax數(shù)據(jù)的實例

    beego獲取ajax數(shù)據(jù)的實例

    下面小編就為大家分享一篇beego獲取ajax數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評論

铁力市| 沂水县| 甘德县| 瓦房店市| 肇庆市| 宜兰市| 阿尔山市| 沭阳县| 顺昌县| 贺兰县| 河北区| 镇赉县| 灯塔市| 惠安县| 荥阳市| 连城县| 温泉县| 陕西省| 峨边| 旬邑县| 秦安县| 南郑县| 元谋县| 陇西县| 弋阳县| 泰来县| 化德县| 台北市| 西平县| 垣曲县| 靖州| 肥西县| 专栏| 弥勒县| 满洲里市| 波密县| 武宁县| 尚义县| 南雄市| 榆树市| 平度市|