<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
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 函數
在上面的程式碼中,所有的程式碼都是寫在使用 func
關鍵字定義的 main
函數中,在 Go 中 main 函數是入口函數,類似 Java 中的 main 函數。
init 函數
Go 中 init 函數負責 package 的初始化,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 函數可以定義多個。
這兩個函數官方只能定義在測試環境中使用,生產環境不推薦使用。
上述程式碼中除了 main 函數還涉及到了列印相關的函數,這些函數都在 fmt 包下,共有三個輸出函數
// 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其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45