HelloWorld
我們先看看一個最簡單的HelloWorld代碼
1 package main 2 3 import "fmt" 4 5 func main() { 6 fmt.Println("Hello, World!") 7 }
這段代碼可以在控制台輸出 "Hello, World!"
下面讓我們來刨析一下此段代碼
第一行的 package main 定義了該程序的包名為 main ,main的功能同其它語言一樣,都代表着程序的主要部分/入口,每一個應用都應該有一個main
第三行的 import "fmt" 代指引入fmt模塊,fmt模塊作用是輸入輸出,同學們可以暫且把他們看作Python的Print,要注意的是Go語言中禁止引入模塊而不使用,這是為了保證代碼的可讀性和簡潔性.
第五行開始 為構建一個名為main的函數,同Python類的main類似,當定義main后執行該模塊會先執行main函數,當定義了init函數時會優先執行init初始化函數,Println函數也可以打印變量的值,此時不帶引號.
# 當標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那么使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱為導出(像面向對象語言中的 public);標識符如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見並且可用的(像面向對象語言中的 protected )。 ---- 菜鳥教程
# Go語言中的多行注釋是 /* */ 單行注釋是 //
Go語言中變量的定義使用
Go語言的建立變量如下
var sum int
分三個部分來讀
新建變量 變量名 類型
注意變量名要規避Go語言的關鍵字(關鍵字以后會整理)
我們無法在函數外使用變量,會報錯
syntax error: non-declaration statement outside function body
語法錯誤:函數主體之外的非聲明語句
當我們在函數內使用變量則正確
1 package main 2 3 import "fmt" 4 5 var sum int 6 7 func main() { 8 sum = 1997 9 fmt.Println(sum) 10 }
導入包內的變量
每個Go項目都由多個包組成,當我們想要在A包中調用B包內的變量,首先要保證已經導入A,其次要保證要導入的變量第一個字母大寫
我們引入math包,math.Pi是圓周率
package main import ( "fmt" "math" ) //var sum int func main() { //sum = 1997 //fmt.Println(sum, rand.Intn(10)) fmt.Println(math.Pi) }
可以正常打印,但是當我們改成小p,則會輸出錯誤
cannot refer to unexported name math.pi
無法引用未導出的名稱math.pi
函數的傳參與返回
package main import ( "fmt" ) func add(x int, y string) (int, string) { return x, y } func main() { fmt.Println(add(1, "ad")) }
我們來看這段代碼,我們新建了一個函數為add,當我們需要傳參時要指定參數的類型
(x int, y string) 代表可接受兩個參數,x是int類型,y是str類型,如果我們接受的x,y都是一個類型可以簡寫為 (x, y int)
(int, string) 代表返回兩個參數,第一個參數為int類型,第二個參數為str類型,返回時不可簡寫
我們也可以直接寫return,這樣會將所有函數內變量傳出
package main import "fmt" func add(x, y int) (sum int) { sum = x + y return } func main() { fmt.Println(add(1, 2)) }
但是這樣還是需要傳出變量的名字,而且這樣代碼的可讀性不是太好,所以我們不推薦這樣使用
變量的定義
var語句可以同時將多個變量定義為一個類型
package main import "fmt" func add(x, y int) (sum int) { sum = x + y return } var a, b, c bool func main() { a = true fmt.Println(a, b, c) }
此時一個var語句定義了 a,b,c 三個變量,同時定義為bool值
又因為變量為空所以都是False
我們在main中又將a賦值為True
此時打印結果為
true false false
我們還可以在定義變量時賦予變量值
package main import "fmt" func add(x, y int) (sum int) { sum = x + y return } var a, b, c bool = true, true, false func main() { fmt.Println(a, b, c) }
此時結果為
true true false
這種方式作用等同於
package main import "fmt" func add(x, y int) (sum int) { sum = x + y return } var a=true var b=false var c=true func main() { fmt.Println(a, b, c) }
結果為
true false true
在函數內部我們可以不使用var定義變量,方法為
package main import "fmt" func main() { a := 1 b := "ad" fmt.Println(a, b) }
結果為
1 ad