首頁 > 軟體

深入瞭解Go語言的基本語法與常用函數

2022-07-15 18:00:17

一、基本語法

識別符號命名規範

Go 是區分大小寫的,識別符號的命名包含了 Go 中變數、常數、函數、結構體、介面以及方法的命令,Go 限定任何需要對外暴露的識別符號必須以大寫字母開頭,不需要對外暴露的識別符號則需要以小寫字母開頭。

識別符號以大寫開頭,就表示可以被外部包的程式碼參照,稱之為匯出。如果以小寫字母開頭,那麼對外就是不可見的,但是在整個包的內部是可見且可用的。

識別符號的命名應該避免與 Go 中內建的關鍵字衝突。

變數的命令規範

採用駝峰命名法,首字母根據存取控制大寫或者小寫

var username string
var url string

常數的命名規範

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

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

列舉型別的常數

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

結構體的命名規範

結構體也是採用駝峰命名法,首字母的大小寫根據存取控制決定

type Info stuct {
    Username string
    Age int 
}

介面命名規範

介面的命名規範與結構體的命名規範基本一致,只有一個方法的介面命名以 "er" 結尾,如 Fighter

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

檔案和包的命名規範

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

Go 中的常用關鍵字

關鍵字說明
var定義變數
const定義常數
package
import匯入包關鍵字
func定義函數關鍵字
return用於修飾函數中返回值
interface定義介面
struct定義抽象資料型別
type宣告自定義型別
map宣告 map 資料型別
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)
}

執行上述程式碼,輸出結果如下:

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)
}

執行上述程式碼,輸出結果如下:

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

二、常用函數

main 函數與 init 函數

main 函數

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

init 函數

Go 中 init 函數負責 package 的初始化,init 函數:

  • 在 main 函數前執行,自動被呼叫,初始化 package 中的變數等
  • init 函數不能被其他函數呼叫
  • 每個包可以有多個 init 函數,同一個包的 init 函數執行順序與 init 函數定義的位置有關
  • 包中每個原始檔也可以又有多個init 函數
  • 不同包中的 init 函數按照匯入的依賴關係決定 init 函數的執行順序
  • init 函數沒有返回值
// filename ex4.go

package main

import "fmt"

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

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

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

func main() {

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

}

執行上述程式碼,輸出記過如下:

這是第一個 init 函數
這是第二個 init 函數
這是第三個 init 函數
這是 main 函數

呼叫第一個和第三個 init 函數的位置,再次執行改程式碼

這是第三個 init 函數
這是第一個 init 函數
這是第二個 init 函數
這是 main 函數

同一個檔案中 init 函數執行的順序與位置有關,但是都會先於 main 函數執行。

init 函數 VS main 函數

main 函數和 init 函數定義時都不能有任何返回值,且都是有 Go 自動呼叫的。

main 函數只能定義一個,init 函數可以定義多個。

這兩個函數官方只能定義在測試環境中使用,生產環境不推薦使用。

fmt 包及其函數

上述程式碼中除了 main 函數還涉及到了列印相關的函數,這些函數都在 fmt 包下,共有三個輸出函數

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


package main

import "fmt"

func main() {

   // 常用函數
   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)

}

執行上述程式碼,輸出結果如下:

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

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

以上就是深入瞭解Go語言的基本語法與常用函數的詳細內容,更多關於Go語言 語法 函數的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com