GO 語言 新手教程(一) 基礎語法
GO 語言結構
package main
//定義了包名, 必須在原始檔中非註釋的第一行指明這個檔案屬於哪個包
//package main表示一個可獨立執行的程式,每個 Go 應用程式都包含一個名為 main 的包
import "fmt"
//使用 fmt 包(的函式,或其他元素),fmt 包實現了格式化 IO(輸入/輸出)的函式
func main() {
//程式開始執行的函式。main 函式是每一個可執行程式所必須包含的
/* 這是我的第一個簡單的程式 */
fmt.Println("Hello, World!") //將字串輸出到控制檯,
}
Go 語言資料型別
序號 | 型別 | 描述 |
---|---|---|
1 | uint8 | 無符號 8 位整型 (0 到 255) |
2 | uint16 | 無符號 16 位整型 (0 到 65535) |
3 | uint32 | 無符號 32 位整型 (0 到 4294967295) |
4 | uint64 | 無符號 64 位整型 (0 到 18446744073709551615) |
5 | int8 | 有符號 8 位整型 (-128 到 127) |
6 | int16 | 有符號 16 位整型 (-32768 到 32767) |
7 | int32 | 有符號 32 位整型 (-2147483648 到 2147483647) |
8 | int64 | 有符號 64 位整型 (-9223372036854775808 到 9223372036854775807) |
1 | float32 | IEEE-754 32位浮點型數 |
2 | float64 | IEEE-754 64位浮點型數 |
3 | complex64 | 32 位實數和虛數 |
4 | complex128 | 64 位實數和虛數 |
1 | byte | 類似 uint8 |
2 | rune | 類似 int32 |
3 | uint | 32 或 64 位 |
4 | int | 與 uint 一樣大小 |
5 | uintptr | 無符號整型,用於存放一個指標 |
Go 語言變數
宣告變數的一般形式是使用 var 關鍵字:
var identifier type
第一種,指定變數型別,聲明後若不賦值,使用預設值。
var v_name v_type
v_name = value
第二種,根據值自行判定變數型別。
var v_name = value
第三種,省略var, 注意 :=左側的變數不應該是已經宣告過的,否則會導致編譯錯誤。
v_name := value
// 例如
var a int = 10
var b = 10
c := 10
例項
package main
var a = "菜鳥教程"
var b string = "runoob.com"
var c bool
func main(){
println(a, b, c)
}
多變數宣告例項
package main
var x, y int
var ( // 這種因式分解關鍵字的寫法一般用於宣告全域性變數
a int
b bool
)
var c, d int = 1, 2
var e, f = 123, "hello"
//這種不帶宣告格式的只能在函式體中出現
//g, h := 123, "hello"
func main(){
g, h := 123, "hello"
println(x, y, a, b, c, d, e, f, g, h)
}
賦值使用技巧
1. 同一型別的多個變數可以宣告在同一行
var a, b, c int
2. 多變數可以在同一行進行賦值
var a, b int
var c string
a, b, c = 5, 7, "abc"
3.假設了變數 a,b 和 c 都已經被宣告,否則的話應該這樣使用
a, b, c := 5, 7, "abc"
4.交換兩個變數的值
a, b = b, a
空白識別符號 _ 也被用於拋棄值,如值 5 在:_, b = 5, 7 中被拋棄
5.一個函式返回多個返回值
val, err = Func1(var1)。
GO語言常量
常量是一個簡單值的識別符號,在程式執行時,不會被修改的量。
常量中的資料型別只可以是布林型、數字型(整數型、浮點型和複數)和字串型。
常量的定義格式
常量的定義格式:
const identifier [type] = value
顯式型別定義: const b string = "abc"
隱式型別定義: const b = "abc"
const c_name1, c_name2 = value1, value2
常量還可以用作列舉:
const (
Unknown = 0
Female = 1
Male = 2
)
iota 特殊常量
在每一個const關鍵字出現時,被重置為0,然後再下一個const出現之前,每出現一次iota,其所代表的數字會自動增加1。
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //獨立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢復計數
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
以上例項執行結果為:
0 1 2 ha ha 100 100 7 8
感覺很奇怪```
Go 語言運算子
條件語句
語句 | 描述 |
---|---|
if 語句 | if 語句 由一個布林表示式後緊跟一個或多個語句組成。 |
if…else 語句 | if 語句 後可以使用可選的 else 語句, else 語句中的表示式在布林表示式為 false 時執行。 |
if 巢狀語句 | 你可以在 if 或 else if 語句中嵌入一個或多個 if 或 else if 語句。 |
switch 語句 | switch 語句用於基於不同條件執行不同動作。 |
select 語句 | select 語句類似於 switch 語句,但是select會隨機執行一個可執行的case。如果沒有case可執行,它將阻塞,直到有case可執行。 |
package main
import "fmt"
func main() {
/* 定義區域性變數 */
var a int = 10
/* 使用 if 語句判斷布林表示式 */
if a < 20 {
/* 如果條件為 true 則執行以下語句 */
fmt.Printf("a 小於 20\n" )
}
fmt.Printf("a 的值為 : %d\n", a)
}
迴圈語句
語句 | 描述 |
---|---|
for 迴圈 | 重複執行語句塊 |
迴圈巢狀 | 在 for 迴圈中巢狀一個或多個 for 迴圈 |
break 語句 | 經常用於中斷當前 for 迴圈或跳出 switch 語句 |
continue 語句 | 跳過當前迴圈的剩餘語句,然後繼續進行下一輪迴圈。 |
goto 語句 | 將控制轉移到被標記的語句。 |
例項:
package main
import "fmt"
func main() {
var b int = 15
var a int
numbers := [6]int{1, 2, 3, 5}
/* for 迴圈 */
for a := 0; a < 10; a++ {
fmt.Printf("a 的值為: %d\n", a)
}
for a < b {
a++
fmt.Printf("a 的值為: %d\n", a)
}
for i,x:= range numbers {
fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
}
}
GO語言函式
func function_name( [parameter list] ) [return_types] {
函式體
}
函式定義解析:
func:函式由 func 開始宣告
function_name:函式名稱,函式名和引數列表一起構成了函式簽名。
parameter list:引數列表,引數就像一個佔位符,當函式被呼叫時,你可以將值傳遞給引數,這個值被稱為實際引數。引數列表指定的是引數型別、順序、及引數個數。引數是可選的,也就是說函式也可以不包含引數。
return_types:返回型別,函式返回一列值。return_types 是該列值的資料型別。有些功能不需要返回值,這種情況下 return_types 不是必須的。
函式體:函式定義的程式碼集合。
/* 函式返回兩個數的最大值 */
func max(num1, num2 int) int {
/* 宣告區域性變數 */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
函式返回多個值
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Mahesh", "Kumar")
fmt.Println(a, b)
}
Go 語言函式閉包
Go 語言支援匿名函式,可作為閉包。匿名函式是一個”內聯”語句或表示式。匿名函式的優越性在於可以直接使用函式內的變數,不必申明。
package main
import "fmt"
func getSequence() func() int {
i:=0
return func() int {
i+=1
return i
}
}
func main(){
/* nextNumber 為一個函式,函式 i 為 0 */
nextNumber := getSequence()
/* 呼叫 nextNumber 函式,i 變數自增 1 並返回 */
fmt.Println(nextNumber())
fmt.Println(nextNumber())
fmt.Println(nextNumber())
/* 建立新的函式 nextNumber1,並檢視結果 */
nextNumber1 := getSequence()
fmt.Println(nextNumber1())
fmt.Println(nextNumber1())
}
1
2
3
1
2
相關推薦
GO 語言 新手教程(一) 基礎語法
GO 語言結構 package main //定義了包名, 必須在原始檔中非註釋的第一行指明這個檔案屬於哪個包 //package main表示一個可獨立執行的程式,每個 Go 應用程式都包含一個名為 main 的包 import "fmt
Go語言入門教程(一)Linux下安裝Go
說明 Gavin使用的系統是Ubuntu。 關於安裝 這裡只介紹原始碼安裝,至於使用包管理工具安裝,不再介紹,因為就一條命令,沒得說。 下載安裝包 當前官方下載地址是https://g
Spring MVC新手教程(一)
erp -s sil troy .html 解釋 rand rtu wire 直接幹貨 model 考慮給用戶展示什麽。關註支撐業務的信息構成。構建成模型。 control 調用業務邏輯產生合適的數據以及傳遞數據給視圖用於呈獻; view怎樣對數據進行布局,以
c 語言學習筆記(一)基礎
lac alert https 內容 con 標記 prime c++ prime c基礎 近期工作上有對C語言算法上的需求,所以要學C,上學的時候沒學過,只學過半年的Java(我是專升本,本科學的材料),2015年工作後也學過C,那時候的需求是能看懂就可以,也就沒深入研究
Go語言之反射(一)
反射 反射是指在程式執行期對程式本身進行訪問和修改的能力。程式在編譯時,變數被轉換為記憶體地址,變數名不會被編譯器寫入到可執行部分。在執行程式時,程式無法獲取自身的資訊。支援反射的語言可以在程式編譯期將變數的反射資訊,如欄位名稱、型別資訊、結構體資訊等整合到可執行檔案中,並給程式提供介面訪問反射資訊,這樣就
Go語言學習筆記(一) 簡介、安裝
為什麼選擇Go 程式語言已經非常多,偏效能敏感的編譯型語言有 C、C++、Java、C#、Delphi和Objective-C等,偏快速業務開發的動態解析型語言有PHP、Python、Perl、Ruby、JavaScript和Lua等,面向特定領域的語言有Erlang、R和MATLAB等,
GO語言學習筆記(一)
lee 浮點 lds 問題 chan str 布爾 創建 當前 GO語言學習筆記 1.數組切片slice:可動態增長的數組 2.錯誤處理流程關鍵字:defer panic recover 3.變量的初始化:以下效果一樣 `var a int = 10` `var a = 1
OpenCV3入門教程(一)基礎知識
------韋訪 20181011 1、概述 想學習影象處理,不管是機器學習也好,深度學習也好,不會點OpenCV好像有點說不過去吧?所以,現在開始OpenCV的學習。 2、讀寫圖片 先從圖片的讀寫開始,opencv讀取圖片的函式是imread,預設情況下,imrea
solidity教程(一)基礎講解
title: solidity教程(一)基礎 tags: solidity,區塊鏈 第1章: 課程概述 第一課你將創造一個"殭屍工廠", 用它建立一支殭屍部隊。 我們的工廠會把我們部隊中所有的殭屍儲存到資料庫中 工廠會有一個函式能產生新的殭屍 每個殭屍會有
Python-matplotlib-入門教程(一)-基礎圖表繪製
0.摘要 本教程主要介紹使用python第三方庫matplotlib繪製各種統計圖表,教程從簡單到複雜,逐步遞進。 本章主要介紹常見圖表的繪製方法,並以儘可能簡單的方式實現,主要以突出函式功能為目的,防止讀者被複雜的引數分散了注意力。鑑於函式的引數的相似性,讀者只需要知道引數的含義並結合he
Scala 語言入門(一)基礎語法和函式使用
一、下載安裝 scala 將下載好的scala-2.12.8.zip包解壓到當前目錄,配置 環境變數 配置path 和 classpath 編寫 HelloWorld.scala檔案 object HelloWorld{ def main(args:A
[ webpack4 ] 配置屬於自己的打包系統教程(一)—— 基礎配置篇
GitHub 完整配置檔案地址: https://github.com/yhtx1997/webpack4-Instance 由於篇幅過長分三次釋出,建議按順序看 基礎配置篇 主要內容 安裝 webpack4 目錄初始化 配置初始化 入口及多入口配置 出口配置 安裝 web
go語言學習筆記(一)——GoPath
環境變數介紹 GOROOT:Golang的安裝路徑 GOPATH:可以理解為工作目錄或者工作區,也是平時接觸最多的一個變數。它可以是一個目錄,可以是多個目錄路徑,每個目錄代表一個工作區。這些目錄用於放置Go語言的原始碼檔案(src),以及安裝(命令go insta
Theano中文翻譯教程(一). 基礎騙之 Baby Steps
初步-代數 兩個數求和 讓我們來開始學習Theano。為了對我們所用的工具有一個直觀的感受,我們首先來做一個簡單的函式:兩個數的求和。下面就是函式的定義方法: >>> import numpy >>> import theano.t
GO語言學習筆記(一)Go語言的初步了解
Go語言 text readme arw tarc test 執行 .tar.gz gin 一·、Go語言的官方網站https://golang.org/dl/二、安裝Go語言Linux版本: tar zxf go1.11.4.linux-amd64.tar.gz mv g
Go語言入門教程(三)在Ubuntu上使用Eclipse開發Go
說明 這裡假設您已經安裝了JDK,如果沒有,請自行安裝。 一、安裝eclipse 下載Eclipse 首先,請到官方網站下載Eclipse,推薦下載完成安裝包,Gavin下載的是eclipse-java-oxygen-R-linux-gtk-x8
GO語言學習日記(一)Windows環境下配置Go語言
最近突然對Go語言非常感興趣,每一個語言在學習程式設計的時候就要學會配置環境,否者你是沒辦法編寫和編譯程式碼的。這裡就針對window的環境進行配置,其他系統的Go語言配置等我有心情的時候再去寫吧! 配置Golang語言的環境需要非常簡單,但是由於國內政策問題,導
Java SE(一)- 基礎語法
bool efault system.in ack 意義 盛大 shift if條件 oop 一、Java數據基本概念 Java的基本概念,包括標識符、關鍵字、數據類型、字面值、變量和常量等。 1、代碼規範與註釋 盡量使每個變量的聲明單獨占一行;關鍵字與關鍵字間只認一個空格
Scala學習(一)——基礎語法
extend property obj array add 活性 devel type 單個 Scala語言是一種面向對象語言,結合了命令式(imperative)和函數式(functional)編程風格,其設計理念是創造一種更好地支持組件的語言。 特性 多範式(
react教程(一)JSX語法、組件概念、生命周期介紹
app .org react教程 sna 輸入 卸載 war fun 獲取 JSX React中,推出了一種新的語法取名為JSX,它給了JS中寫HTML標簽的能力,不需要加引號。JSX的語法看起來是一種模板,然而它在編譯以後,會轉成JS語法,只是書寫過程中的語法糖。 JSX